workerman 5.2.3 与 gatewayworker 兼容,通过 composer 安装 gateway-worker v4+ 即可自动适配;需启动 register、gateway、businessworker 三进程,配置一致 registeraddress 并确保 pcntl/posix 扩展启用。

Workerman 5.2.3 本身不直接“对接”GatewayWorker——它是底层运行时,而 GatewayWorker 是基于它构建的完整长连接应用框架。所谓“对接”,实际是正确安装、初始化并启动 GatewayWorker 的三个核心进程(Register、Gateway、BusinessWorker),让它们在 Workerman 5.2.3 环境下协同工作。
确认兼容性与安装方式
GatewayWorker 官方已明确支持 Workerman 5.x(包括 5.2.3)。无需降级或特殊适配:
- 使用 composer require workerman/gateway-worker 即可自动拉取兼容版本(当前最新稳定版 GatewayWorker v4+ 已全面适配 Workerman 5)
- 不必手动下载 ZIP 包或替换源码;Composer 会处理 autoloader 和类路径依赖
- 检查 vendor/workerman/workerman 的实际版本:运行 php -r "echo \Workerman\Worker::VERSION;" 应输出 5.2.3
结构化启动流程(关键三进程)
GatewayWorker 依赖 Register(注册中心)、Gateway(连接网关)、BusinessWorker(业务处理)三类进程协作。缺一不可:
通过 `dcc-mcp-cli` 命令行工具控制实时 DCC 主机(Maya、Blender、Houdini、Photoshop、3ds Max 以及自定义的 Studio 工具)。 针对 ClawHub、OpenClaw、Cursor、Claude 和支持 shell 的 Agent 主机:验证网关健康状态、列出已注册的 DCC 实例、搜索工具、检查 Schema、调用工具——全程无需直接编写或发送 MCP 请求。 若系统中未安装 `dcc-mcp-cli`,需先征得用户同意,再从 GitHub
-
Register 进程:必须最先启动,监听一个本地端口(如
127.0.0.1:1236),为 Gateway 和 BusinessWorker 提供服务发现能力 -
Gateway 进程:监听客户端 WebSocket/TCP 端口(如
0.0.0.0:8282),只负责收发数据、维持连接,不做业务逻辑 -
BusinessWorker 进程:加载你的
Events.php,执行onMessage等回调,调用Gateway::sendToClient()等接口完成消息路由
三者通过 registerAddress 配置指向同一 Register 地址,自动完成注册与通信。
Events.php 中的业务逻辑写法(适配 5.2.3)
Workerman 5.x 对静态方法调用和对象生命周期更严格,Events 类必须满足:
- 所有回调方法(
onConnect、onMessage、onClose)必须声明为 public static - 不能在
onMessage中直接 new 实例或访问 $this;需通过Gateway::getUidByClientId()等静态接口获取上下文 - 若需数据库或 Laravel/TP 实例,建议在
onWorkerStart中初始化并存入全局变量或静态属性,避免每次消息都重建连接
常见启动失败排查点
Workerman 5.2.3 启动 GatewayWorker 时卡住或报错,优先检查:
-
扩展缺失:Linux 下必须启用
pcntl和posix;Windows 用户请改用workerman/gateway-worker-for-win - 端口冲突:Register(默认 1236)、Gateway(默认 8282)、BusinessWorker(无监听端口)三者端口不能被占用;宝塔/防火墙需放行 Gateway 端口
-
配置未生效:修改
start_gateway.php或Events.php后,必须 完全停止再重启(php start.php stop && php start.php start),热重载不生效 -
协议不匹配:前端 WebSocket 连接地址必须与
start_gateway.php中$gateway = new Gateway('websocket://0.0.0.0:8282');协议一致(如 wss 则需配 HTTPS + SSL)










