1、基础知识
一、Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被普遍的用于手机app、移动通信等领域的开发。 支持TCP长链接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件。
二、GatewayWorker基于Workerman开发的一个框架,支持多协议多端口监听,支持分布式多机部署,用于快速开发长链接应用,例如移动通信、物联网、智能家居、游戏服务端、聊天室等等。
三、gateClient是用来辅助 workerman或者是gateway进行用户分组以及向用户发送信息的组件,同时,可以快速便捷的将原有系统的uid和clientid绑定起来。
官网:http://www.workerman.net/php
2、基本理论
一、基本原则
现有mvc框架项目与GatewayWorker独立部署互不干扰
全部的业务逻辑都由网站页面post/get到mvc框架中完成
GatewayWorker不接受客户端发来的数据,即GatewayWorker不处理任何业务逻辑,GatewayWorker仅仅当作一个单向的推送通道
仅当mvc框架须要向浏览器主动推送数据时才在mvc框架中调用Gateway的APIGatewayClient完成推送
二、基本步骤
一、网站页面创建与GatewayWorker的websocket链接
二、GatewayWorker发现有页面发起链接时,将对应链接的client_id发给网站页面
三、网站页面收到client_id后触发一个ajax请求(假设是bind.php)将client_id发到mvc后端
四、mvc后端bind.php收到client_id后利用GatewayClient调用Gateway::bindUid($client_id, $uid)将client_id与当前uid(用户id或者客户端惟一标识)绑定。若是有群组、群发功能,也能够利用Gateway::joinGroup($client_id, $group_id)将client_id加入到对应分组(重点 有了这个之后后面才能发消息之类的)
五、页面发起的全部请求都直接post/get到mvc框架统一处理,包括发送消息(发消息本身自定义格式)
六、mvc框架处理业务过程当中须要向某个uid或者某个群组发送数据时,直接调用GatewayClient的接口Gateway::sendToUid Gateway::sendToGroup 等发送便可前端
3、搭建gateway
一、下载gateway
http://www.workerman.net/download
二、配置events文件
在页面发起链接时候,将对应链接的clent_id发给网站页面。咱们在此文件加上函数web
4、服务端的配置ajax
一、绑定client_id 并加入分组
在此方法中咱们必定要把收到的client_id加入分组中,这里简单点前台页面直接设置room_id为1。
二、收发消息sql
以后咱们就能够在这个方法里面 进行咱们的一些业务逻辑 接入咱们的项目后端