Workerman
开源高性能PHP应用容器
workerman是一款开源高性能PHP应用容器,它大大突破了传统PHP应用范围,被广泛的用于互联网、即时通讯、APP开发、硬件通讯、智能家居、物联网等领域的开发。
PHPSocket.io
PHP版本的socket.io,具有良好的客户端兼容性,常用于即时通讯领域
Linux系统快速开始(从一个精简的聊天demo开始)
1、下载demo官方网下载
2、命令行运行 unzip GatewayWorker.zip
解压缩GatewayWorker.zip
3、命令行运行 cd GatewayWorker
进入GatewayWorker目录
4、命令行运行 php start.php start
启动GatewayWorker
已启动状态
放行端口
与ThinkPHP等框架结合
使用GatewayWorker时开发者最关心的是如何与现有mvc框架(ThinkPHP Yii laravel等)整合,以下是官方推荐的整合方式。见示意图:
总体原则:
现有mvc框架项目与GatewayWorker独立部署互不干扰
所有的业务逻辑都由网站页面post/get到mvc框架中完成
GatewayWorker不接受客户端发来的数据,即GatewayWorker不处理任何业务逻辑,GatewayWorker仅仅当做一个单向的推送通道
仅当mvc框架需要向浏览器主动推送数据时才在mvc框架中调用Gateway的API GatewayClient完成推送。
GatewayClient安装
参考地址 GitHub - walkor/GatewayClient: Sdk For GatewayWorker
具体实现步骤
1、网站页面建立与GatewayWorker的websocket连接
2、GatewayWorker发现有页面发起连接时,将对应连接的client_id发给网站页面
3、网站页面收到client_id后触发一个ajax请求(假设是bind.php
)将client_id发到mvc后端
4、mvc后端bind.php
收到client_id后利用GatewayClient调用Gateway::bindUid($client_id, $uid)
将client_id与当前uid(用户id或者客户端唯一标识)绑定。如果有群组、群发功能,也可以利用Gateway::joinGroup($client_id, $group_id)