前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PHP分布式TCP长连接框架 GatewayWorker

PHP分布式TCP长连接框架 GatewayWorker

作者头像
Tinywan
发布于 2025-05-19 02:51:13
发布于 2025-05-19 02:51:13
7300
代码可运行
举报
文章被收录于专栏:开源技术小栈开源技术小栈
运行总次数:0
代码可运行

概述

GatewayWorker是基于Workerman开发的一个可分布式部署的TCP长连接框架,专门用于快速开发TCP长连接应用,例如app推送服务端、即时IM服务端、游戏服务端、物联网、智能家居等等.

GatewayWorker使用经典的Gateway和Worker进程模型。Gateway进程负责维持客户端连接,并转发客户端的数据给BusinessWorker进程处理,BusinessWorker进程负责处理实际的业务逻辑(默认调用Events.php处理业务),并将结果推送给对应的客户端。Gateway服务和BusinessWorker服务可以分开部署在不同的服务器上,实现分布式集群。

GatewayWorker提供非常方便的API,可以全局广播数据、可以向某个群体广播数据、也可以向某个特定客户端推送数据。配合Workerman的定时器,也可以定时推送数据。

官方DEMO(Windows 版本)

TCP 协议

1、下载demo代码:https://www.workerman.net/download/GatewayWorker.zip

2、解压GatewayWorker.zip

3、进入GatewayWorker目录

4、双击start_for_win.bat启动,效果如下

5、新开几个cmd命令行窗口运行telnet 127.0.0.1 8282,输入任意字符即可聊天

以上表示TCP连接测试成功

Websocket 协议

1、修改 start_gateway.php 指定websocket协议

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$gateway = new Gateway(websocket://0.0.0.0:8282);

2、重新启动 start_for_win.bat3、浏览器控制台测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var ws = new WebSocket('ws://127.0.0.1:8282'); 
ws.onmessage = function(event) {
    console.log('开源技术小栈接收消息: ' + event.data);
};

工作原理

  • 1、Register、Gateway、BusinessWorker进程启动
  • 2、Gateway、BusinessWorker进程启动后向Register服务进程发起长连接注册自己
  • 3、Register服务收到Gateway的注册后,把所有Gateway的通讯地址保存在内存中
  • 4、Register服务收到BusinessWorker的注册后,把内存中所有的Gateway的通讯地址发给BusinessWorker
  • 5、BusinessWorker进程得到所有的Gateway内部通讯地址后尝试连接Gateway
  • 6、如果运行过程中有新的Gateway服务注册到Register(一般是分布式部署加机器),则将新的Gateway内部通讯地址列表将广播给所有BusinessWorker,BusinessWorker收到后建立连接
  • 7、如果有Gateway下线,则Register服务会收到通知,会将对应的内部通讯地址删除,然后广播新的内部通讯地址列表给所有BusinessWorker,BusinessWorker不再连接下线的Gateway
  • 8、至此Gateway与BusinessWorker通过Register已经建立起长连接
  • 9、客户端的事件及数据全部由Gateway转发给BusinessWorker处理,BusinessWorker默认调用Events.php中的onConnect onMessage onClose处理业务逻辑。
  • 10、BusinessWorker的业务逻辑入口全部在Events.php中,包括onWorkerStart进程启动事件(进程事件)、onConnect连接事件(客户端事件)、onMessage消息事件(客户端事件)、onClose连接关闭事件(客户端事件)、onWorkerStop进程退出事件(进程事件)

进程模型

workerman master woker模型
workerman master woker模型

特点

从图上我们可以看出Gateway负责接收客户端的连接以及连接上的数据,然后Worker接收Gateway发来的数据做处理,然后再经由Gateway把结果转发给其它客户端。每个客户端都有很多的路由到达另外一个客户端,例如client⑦与client①可以经由蓝色路径完成数据通讯.

优点

  • 1、可以方便的实现客户端之间的通讯。
  • 2、Gateway与Worker之间是基于socket长连接通讯,也就是说Gateway、Worker可以部署在不同的服务器上,非常容易实现分布式部署,扩容服务器。
  • 3、Gateway进程只负责网络IO,业务实现都在Worker进程上,可以reload Worker进程,实现在不影响用户的情况下完成代码热更新。

适用场景

适用于客户端与客户端需要实时通讯的项目。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验