windows 系统下 workerman 在同一个运行窗口中开启多个 websocket 服务
创始人
2025-05-29 10:31:42

✨ 目录

    • 🎈 开启多个 ws 服务失败
    • 🎈 开启服务失败解决办法
    • 🎈 同一个窗口中运行

🎈 开启多个 ws 服务失败

  • 正常情况下,如果你想开启多个 websocket 服务的话
  • 只要在一个文件中,输入 new Worker 两次,监听不同端口,使用 Worker::runAll() 命令即可
  • 但是你会发现在在 windows 中无法在一个文件中同时监听两个 websocket 服务,其他系统比如 Linux 是没有问题的
  • 会报 multi workers init in one php file are not support 错误,意思 windows 中禁止在同一个文件中开启多个 websocket 服务
onMessage = function(TcpConnection $connection, $data)
{$connection->send('hello http');
};$ws_worker = new Worker('websocket://0.0.0.0:2345');
$ws_worker->onMessage = function(TcpConnection $connection, $data)
{$connection->send('hello websocket');
};// 运行所有Worker实例
Worker::runAll();

🎈 开启服务失败解决办法

  • windows 版本的 workerman 不支持在同一个文件中实例化多个 Worker

    因此 windows 版本的 workerman 需要将多个 Worker 实例初始化放在不同的文件中才可以解决

  • 比如我们定义两个文件,一个 start_http.php,另一个是 start_websocket.php,在文件中分别加入以下代码,监听不同端口,然后使用 php 文件名 命令启动这两个文件即可

onMessage = function(TcpConnection $connection, $data)
{$connection->send('hello websocket');
};// 运行所有Worker实例(这里只有一个实例)
Worker::runAll();

🎈 同一个窗口中运行

  • 上面虽然可以解决运行多个 websocket 实例,但是你会发现有几个文件,就会有几个运行窗口
  • 如果开启的服务更多,窗口也会更多,那么如何在同一个窗口中运行启动多个服务呢
  • 那么如果要解决这个问题,我们就可以创建一个 init.bat 文件,然后在文件中加入以下代码,然后双击运行即可实现在同一个窗口中启动多个服务
  • /d: 表示切换目录
  • /b: 表示不打开新窗口,在当前窗口继续执行
%切换到项目根目录%
cd /d E:\xxxxxx%启动第一个服务%
start /b php start_http.php%启动第二个服务%
start /b php start_websocket.php

相关内容

热门资讯

热议!韩国“一姐”因揭发丑闻获... 近日,有关国羽女单最强对手、韩国名将安洗莹因揭露韩国羽协的腐败行为而获得高达5000万韩元奖励一事,...
张雪回应比赛提前结束:如果继续... 4月19日,2026世界超级摩托车锦标赛(WSBK)荷兰站WorldSSP组别第二回合正赛,驾驶张雪...
杨幂代言的背背佳卖爆了,“不差... 出品 | 创业最前线 于莹 4月10日,可孚医疗港股IPO申请正式通过聆讯,距离“A+H”两地上市...
原创 “... 金三角这个地方,地图上能找着,但管不着。它横在泰国、老挝、缅甸三国的交界处,山连着山,河套着河,一条...
冷评丨12306拒了百万张票,... 海报新闻编辑 王云峰 4月16日至18日,12306拒绝出票105.6万张,70.4万笔交易被拦下...