Skip to content

GatewayWorker2.x 3.x 手册

本手册适用于 GatewayWorker2.x 版本以及 3.x 版本。

GatewayWorker 手册

GatewayWorker 基于 Workerman 开发的一个项目框架,用于快速开发 TCP 长连接应用,例如 app 推送服务端、即时 IM 服务端、游戏服务端、物联网、智能家居等等

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

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

GatewayWorker 与 Workerman 的关系

Workerman 可以看做是一个纯粹的 socket 类库,可以开发几乎所有的网络应用,不管是 TCP 的还是 UDP 的,长连接的还是短连接的。Workerman 代码精简,功能强大,使用灵活,能够快速开发出各种网络应用。同时 Workerman 相比 GatewayWorker 也更底层,需要开发者有一定的多进程编程经验。

因为绝大多数开发者的目标是基于 Workerman 开发 TCP 长连接应用,而长连接应用服务端有很多共同之处,例如它们有相同的进程模型以及单发、群发、广播等接口需求。所以才有了 GatewayWorker 框架,GatewayWorker 是基于 Workerman 开发的一个 TCP 长连接框架,实现了单发、群送、广播等长连接必用的接口。GatewayWorker 框架实现了 Gateway Worker 进程模型,天然支持分布式多服务器部署,扩容缩容非常方便,能够应对海量并发连接。可以说 GatewayWorker 是基于 Workerman 实现的一个更完善的专门用于实现 TCP 长连接的项目框架。

用 GatewayWorker 还是 Workerman?

如果你的项目是长连接并且需要客户端与客户端之间通讯,建议使用 GatewayWorker。 短连接或者不需要客户端与客户端之间通讯的项目建议使用 Workerman。 GatewayWorker 不支持 UDP 监听,所以 UDP 服务请选择 Workerman。 如果你是一个有多进程 socket 编程经验的人,喜欢定制自己的进程模型,可以选择 Workerman。

Linux 系统快速开始(从一个精简的聊天 demo 开始)

1、下载 demo

2、命令行运行 unzip GatewayWorker.zip 解压缩 GatewayWorker.zip

3、命令行运行 cd GatewayWorker 进入 GatewayWorker 目录

4、命令行运行 php start.php start 启动 GatewayWorker

5、新开几个命令行窗口运行 telnet 127.0.0.1 8282 ,输入任意字符即可聊天(非本机测试请将 127.0.0.1 替换成实际 ip)。

注意 如果 telnet 超时请设置服务器安全组将 8282 端口开放。 如果需要测试 websocket 协议,需要将 start_gateway.php 中 tcp 改成 websocket

Windows 系统快速开始(从一个精简的聊天 demo 开始)

1、下载 demo

2、解压到任意位置

3、进入 GatewayWorker 目录

4、双击 start_for_win.bat 启动。(如果出现错误请参考这里设置 php 环境变量)

5、新开几个 cmd 命令行窗口运行 telnet 127.0.0.1 8282 ,输入任意字符即可聊天(非本机测试请将 127.0.0.1 替换成实际 ip,)。

注意 windows 系统 telnet 可能需要安装,安装方法可以 baidu 下 windows 系统 telnet 是逐字符发送的,可能无法发送完整的单词语句 如果 telnet 超时请设置服务器安全组将 8282 端口开放 如果需要测试 websocket 协议,需要将 start_gateway.php 中 tcp 改成 websocket

GatewayWorker 源码地址

只包含 GatewayWorker 内核 https://github.com/walkor/GatewayWorker

基于 MIT 许可发布