ThinkPHP 5.1下使用PHPSocket.IO实现websocket通讯
https://beltxman.com/1885.html
PHPSocket.IO
的官方介绍:
PHPSocket.IO是PHP版本的Socket.IO服务端实现,基于workerman开发,用于替换node.js版本Socket.IO服务端。PHPSocket.IO底层采用websocket协议通讯,如果客户端不支持websocket协议, 则会自动采用http长轮询的方式通讯。PHPSocket.IO实现的Polling通信机制包括Adobe Flash Socket、AJAX长轮询、JSONP轮询等。具体采用哪种机制通讯对于开发者完全透明, 开发者使用的是统一的接口。
项目github
地址https://github.com/hsu1943/thinksocketio,项目已经做了很多更新,请按照项目readme
使用。
下面我们使用ThinkPHP5.1
框架来整合PHPSocket.IO
实现客户端和服务端的通讯。
使用的本地开发环境是PHP5.6.30
+ Apache2.4.25
创建新项目
这样你的安装工作就做好了。接下来配置需要的模
配置模块
结合前阵子的文章:ThinkPHP 5.1自动生成模块及目录、文件
我们编辑好build.php
文件:
然后运行
这样就有了socketio模块下面controller
有Index.php
和Server.php
两个控制器和view
下一个index/index
一个视图。
创建服务端
编辑控制器Server.php
为(具体参考注释):
为了测试,在数据库新建了一张表msg
用来存储客户端发送过来的消息。
这样一个可以返回连接成功消息、接收消息、回复消息、存储消息的简单服务端就做好了。
创建客户端
我们在Index.php
控制器中这样写:
在对应的模版文件view/index/index.html
中代码:
到这里,一个具备连接服务端,发送消息,接受并输出消息到控制台的简单websocket
客户端就建好了。
为服务端绑定入口文件
在项目的public
文件夹下新建一个入口文件server.php
并将其绑定到socketio
模块的Server
控制器index
方法;
入口文件server.php
代码:
测试通讯
运行服务端
直接运行项目public
目录下的server.php
;
这个输出表示PHPSocketIO
已经成功在2021
端口运行监听中。
我们打开浏览器打开http://localhost/thinksocket/public/index.php/socketio/
页面;
可以看到页面会弹出‘链接成功’,同时可以看到服务端cmd
终端上打印出new connection
,同事浏览器控制台会输出connect success
,代表已经成功与服务端连接上。
测试发送消息
在页面输入框内输入任意信息,服务端cmd
终端将会打印信息,代表服务端收到信息,然后服务端控制台将会输出‘收到’+发送的信息。
至此,我们的测试完成。
温馨提示:对程序修改后需要重新启动服务端才能生效
以上只是简单的利用ThinkPHP5.1
的框架测试PHPSocket.IO
通讯。
源代码地址:https://github.com/hsu1943/thinksocketio
供大家参考。
update (代码以Github为准)
- 2019/01/22:
Github
项目代码已经更新,加入了用户唯一表示记录以及向指定用户推送消息。详情看:ThinkPHP 5.1+PHPSocket.IO实现websocket搭建聊天室+私聊 - 2019-06-19 增加在线人数统计,在线用户列表,修改昵称,添加系统主动推送接口(广播或私信);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架