php3.2搭建临时聊天系统,基于swoole搭建聊天室程序
1. 创建websocket服务器
swoole从1.7.9版本开始, 内置了websocket服务器功能,我们只需几行简单的PHP代码,就可以创建出一个异步非阻塞多进程的WebSocket服务器。
首先,我们在apache的工作空间下,新建一个项目,名称为swoole,然后在里面新建一个ws-server.php文件,该php文件主要创建一个websocket服务器,同时相应用户的请求,内容如下:
$ws_server = new swoole_websocket_server('192.168.1.169', 9502);//设置server运行时的各项参数
$ws_server->set(array('daemonize' => true, //是否作为守护进程
));//监听WebSocket连接打开事件
$ws_server->on('open', function ($ws, $request) {file_put_contents( __DIR__ .'/log.txt' , $request->fd);//$ws->push($request->fd, "Hello, Welcome\n");
});//监听WebSocket消息事件
$ws_server->on('message', function ($ws, $frame) {
pushMessage($ws,$frame);
});//监听WebSocket连接关闭事件
$ws_server->on('close', function ($ws, $fd) {echo "client-{$fd} is closed\n";
});$ws_server->start();//消息推送
function pushMessage($ws,$frame){$data = $frame->data;$msg = file_get_contents( __DIR__ .'/log.txt');for ($i=1 ; $i<= $msg ; $i++) {$ws->push($i, $frame->fd.' : '.$data);
}
}
上面的代码,创建了一个WebSocket服务器,它的ip地址为192.168.1.169,端口为9502,这些信息,可以根据实际情况来作调整。
2. 创建聊天交互页面
同样的,在swoole目录下,我们新建一个chat.html文件,这是一个纯静态的html5页面,主要作用是通过html5的WebSocket协议跟websocket服务器进行交互,其内容如下:
if(window.WebSocket){var webSocket = new WebSocket("ws://192.168.1.169:9502");
webSocket.onopen = function(event) {//webSocket.send("Hello,WebSocket!");
};
webSocket.onmessage = function(event) {var content = document.getElementById('content');
content.innerHTML = content.innerHTML.concat('
用户id-'+event.data+'
');
}var sendMessage = function(){var data = document.getElementById('message').value;
webSocket.send(data);
}
}else{
console.log("您的浏览器不支持WebSocket");
}
发送
3. 测试
到此为止,我们需要的两个文件都已经创建好了,下面让我们来测试下,是否能按我们的预期来工作。
3.1 启动WebSocket服务器
切换到项目的根目录,然后通过php命令行的方式,执行ws-server.php脚本,即可启动WebSocket服务器,整个命令如下:
cd /var/www/html/swoole
php ws-server.php
如图:
3.1 查看WebSocket服务器是否启动成功
输入命令:netstat -tunlp|grep 9502,如果能看到如下界面,则表示WebSocket服务器启动成功。
3.2 开始聊天
多准备几个浏览器,然后在每个浏览器中,输入http://192.168.1.169/swoole/chat.html,每个浏览器相当于一个用户,然后就可以模拟群聊了。
在Chrome浏览器的聊天窗口中,输入“大家好,我是Chrome”,此时,UC和Firefox浏览器的聊天窗口中,将会看到这个信息。同理,在UC和Firefox浏览器的聊天窗口中输入信息,另外两个窗口也是能看到的,下面是其中一个聊天窗口的截图,如下:
php3.2搭建临时聊天系统,基于swoole搭建聊天室程序相关推荐
- 用Asp.Net创建基于Ajax的聊天室程序
原作者Dahan Abdo 译自CodeProject 如要下载源代码,请到我的网站,地址:http://www.vczx.com/article/show.php?id=1796 简 介 我的第一个 ...
- 【Vaadin教程】利用IDEA开发基于Vaadin网络聊天室程序
为什么80%的码农都做不了架构师?>>> 利用Vaadin,我们可以轻松的开发出丰富的web界面,像写Swing一样写GUI,感觉什么extjs之类的弱爆了!下面是我做的一个网 ...
- 基于Python的聊天室
基于Python的聊天室 文章目录 基于Python的聊天室 一.引言 1.1 背景和意义 1.2 系统要实现的功能 1.2.1 用户登录 1.2.2 群发消息 1.2.3 一对一聊天 1.2.4 发 ...
- 基于java的聊天室系统设计与实现(项目报告+开题报告+答辩PPT+源代码+部署视频)
项目报告 Java网络聊天室系统的设计与实现 计算机从出现到现在有了飞速的发展,现阶段的计算机已经不单单是用于进行运算的独立的个体了,跟随计算机一同发展的还有互联网技术,经过了长久的发展,互联网技术有 ...
- 基于WebSocket实现聊天室(Node)
基于WebSocket实现聊天室(Node) WebSocket是基于TCP的长连接通信协议,服务端可以主动向前端传递数据,相比比AJAX轮询服务器,WebSocket采用监听的方式,减轻了服务器压力 ...
- 基于python的聊天室_Python实现文字聊天室
你是否想过用所学的Python开发一个图形界面的聊天室程序啊? 像这样的: image 如果你想开发这样一个有点怀旧风格的聊天程序,那么可以接着看: 要开发这个聊天程序,你需要具备以下知识点: asy ...
- java开发websocket聊天室_java实现基于websocket的聊天室
[实例简介] java实现基于websocket的聊天室 [实例截图] [核心代码] chatMavenWebapp └── chat Maven Webapp ├── pom.xml ├── src ...
- java udp简单聊天程序_Java基于UDP协议实现简单的聊天室程序
最近比较闲,一直在抽空回顾一些java方面的技术应用. 今天没什么事做,基于udp协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对java网络编程方面的一个简单回忆. ...
- Android 基于Socket的聊天室
原文地址为: Android 基于Socket的聊天室 Socket是TCP/IP协议上的一种通信,在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路.一旦建立了虚拟的网络链路, ...
最新文章
- Android通过ksoap2调用.net(c#)的webservice
- 大数据安全标准现状和思考
- com口驱动_手机都没耳机口了,平衡口现在才来是作死还是?
- linux auditd 审计 简介
- java求最小步数,使数组值相等的最小步数 Minimum Moves to Equal Array Elements
- linux github中文官网,GitHub使用简介
- 统计c语言中英文字幕,C语言日记——递归
- CSS快速学习3:文本、背景等属性
- Ubuntu 16.04 LTS误删系统内核或驱动导致无法上网解决方案
- Ajax用POST方式传中文到SERVLET中,接收时乱码
- 如何摆脱工具类【转载】
- shl归纳推理测试题库_强生2020秋招笔试面试经验合集
- 【算法】Xgboost原理
- 计算机专业笔记本电脑华为,大学生不知道买什么电脑?来看这款华为荣耀极致性价比笔记本!...
- 初识C语言----完结篇
- RK3399平台开发系列讲解(内核设备树篇)3.25、WIFI设备树的解析
- 职场中最重要的情商,是管理情绪
- Binary XML file line #16 in: Error inflating class unknown
- 小综述 | 深度学习在数学文本相关领域的研究梳理
- Colour metric颜色度量
热门文章
- Maya ACES工作流程配置(Arnold 及 RedShift 贴图配置规范-还原出SP-Aces流程下贴图正确的效果) PS还原Aces流程下渲染的图
- 小马哥---高仿苹果5S刷机 6589芯片高配版 详细拆机图与开机界面图。山寨精仿机 版本多,
- 英文基础之语法(二)
- 乐视html5,乐视TV开放平台鼎力支持html5开发者
- delphi trackbar 判断停止拖动_飞智八爪鱼2首发评测,可拖动轮盘,全机高达27键,这波太秀了...
- lecture 3:Python数据的描述性统计
- AbutionGraph新特性-支持动态增删改的scheam free知识结构
- r语言 新增一列数字类型_R语言入门简明笔记—(02)
- 今年支付宝的集福字就靠这个了,天天不重样
- 基于百度AI语音合成,使用python编写的语音朗读工具