与ThinkPHP等框架结合
现有mvc框架项目与GatewayWorker独立部署互不干扰
所有的业务逻辑都由网站页面post/get到mvc框架中完成
GatewayWorker不接受客户端发来的数据,即GatewayWorker不处理任何业务逻辑,GatewayWorker仅仅当做一个单向的推送通道
仅当mvc框架需要向浏览器主动推送数据时才在mvc框架中调用Gateway的API(GatewayClient)完成推送
1、网站页面建立与GatewayWorker的websocket连接
3、网站页面收到client_id后触发一个ajax请求(假设是)将client_id发到mvc后端
4、mvc后端收到client_id后利用GatewayClient调用将client_id与当前uid(用户id或者客户端唯一标识)绑定。如果有群组、群发功能,也可以利用将client_id加入到对应分组
5、页面发起的所有请求都直接post/get到mvc框架统一处理,包括发送消息
6、mvc框架处理业务过程中需要向某个uid或者某个群组发送数据时,直接调用的接口 等发送即可
GatewayWorker中Events.php代码(只有个onConnect回调设置)
网站页面js片段
mvc后端uid绑定代码片段
bind.php (利用GatewayClient绑定)
以上仅是mvc框架与GatewayWorker官方推荐的结合方式,并不是强制使用此方式,开发者可以自由变化选择结合方式以适应自己的业务需求。
当然也可以采用客户端与GatewayWorker直接双向通讯的方式完成业务通讯。
源码:
注意:
如果GatewayClient和GatewayWorker不是在同一台服务器上,则需要先将start_gateway.php中的lanIp改成当前服务器的内网ip(如果不在一个内网可改成公网ip)。
如果GatewayClient和GatewayWorker在同一台服务器上运行,则不用做任何更改,直接按照示例使用GatewayClient即可。
通过GatewayClient发送的数据不会经过Event.php,而是直接经由Gateway进程转发给客户端。
客户端使用示例