赞
踩
前言
Swoole的出现让开发场景变得更丰富,支持编写高性能高并发的 TCP、UDP、 WebSocket 等服务,让 PHPer不再局限于 Web 领域,与此同时也增加了开发者学习成本,有很多特性都需要在开发中额外调试,否则经常会遇到各种“坑”,为了让开发者回归需求场景本身,高效、高质量实现业务,今天我们就用ViewSwoole低代码平台演示快速实现WebSocket服务。
进入ViewSwoole平台,点击“开始使用”注册/登录平台后创建一个项目,默认项目参数不用改动,其中接收消息模型默认为“单独接收消息(一对一)”,可以切换“群体接收消息(一对多)”实现类群聊功能。
在刚才创建的项目下创建一个任务,任务类型选择“WebSocket服务器“,默认项目参数不用改动,其中端口号默认为80,如果80端口被占用,需要改为如:9501,其他参数如“ 是否创建连接成功容器 ”、“ 是否创建Task异步任务 ”等可根据需求自行选择是否创建。
Tips:Task异步任务适用于独立运行的慢业务,如服务器接收到消息后需要触发其他的CPU密集型运
算业务,但不影响消息本体的接收与发送;
点击“查看源码”可以对任务源码进行预览:
在项目列表中下载项目.zip包,并部署、解压到如阿里云ECS服务器指定站点中,用编辑器打开在ViewSwoole平台中创建的WebSocket服务器任务文件,如WS.php,参考下图进行编写代码:当接收到客户端消息时,发送加工过的数据给客户端。
在命令行进入项目,输入php WS.php启动WebSocket服务器。
在项目的demo目录下,可以找到websocket_demo.html客户端文件,用编辑器打开修改IP为公网IP,端口为WebSocket服务器端口,如9501。
Tips:如果项目是HTTPS请求,请在项目配置中开启SSL并配置证书、密钥,更改公网ws://ip:port
为wss://证书域名:port
打开浏览器输入:公网IP 或 域名/demo/websocket_demo.html执行WebSocket客户端,此时客户端会收到服务器发送的数据,点击“发送消息”自己也会收到消息,一个完整周期的WebSocket客户端、服务器创建、运行完成。
Tips:因为websocket_demo.html发送数据的fd(客户端ID)写死为1,所以默认是自己收到消
息,实际开发业务中,值为对方用户的fd,此时对方就可以收到发送的消息了。
延伸说明:客户端连接成功时服务器端将userid与socket-fd进行关联缓存到Redis,每次发送数据通过服务器端查询对方的fd并组装对象字符串JSON.stringify({fd:fd})发送给服务器,如果不发送fd则默认fc为自己;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。