首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WebSocket即时聊天-server端

1、创建websocket服务器对象,监听0.0.0.0:9502端口

$ws = new swoole_websocket_server("0.0.0.0", 9502);

2、监听请求连接事件

$ws->on('open', function ($ws, $request) {}

我是是用写文件的方式记录用户当前连接的句柄,以及用户标识的,减少数据库IO,不过改用redis可能会更好

文件里记录了用户基本信息,自身句柄、以及目标句柄,用做将来发送消息使用

如果连接池中用户在线状态,则向客户端推送用户登录信息

3、监听消息事件

$ws->on('message', function ($ws, $frame) {}

根据请求的json,获取来源用户标识和目标用户标识

判断是否登录状态,

获取目标用户标识的句柄

接下来就是构造数据,像目标连接发送数据

4、关闭连接事件

页面刷新,或者关闭,都会触发这个事件,不过只能拿到当前断开的句柄fd,所以根据这个标识,可以给正在与他聊天的好友,或者所有好友列表里面有该用户的发送下线通知

5、服务端运行swool服务

php /home/wwwroot/valent/index.php Websocket websocket_start > log.txt &

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180128G0NY9X00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券