环境:Workerman version:4.0.27 PHP version:8.1.12
创建了一个websocket服务,开启了两个进程
$worker = new Worker("websocket://127.0.0.1:9952");
$worker->count = 2;
手册中群发消息是:
$worker->onMessage = function (TcpConnection $connection, $buffer) {
// 这里拿到的是当前worker进程中的所有连接信息
$connections = $connection->worker->connections;
$workerId = $connection->worker->id;
foreach ($connections as $connection) {
$connection->send("worker id: " . $workerId . " connection id = " . $connection->id . " buffer: " . $buffer);
}
}
我的疑问是:
如果是多进程,这个地方拿到的只是属于当前worker下的所有链接,那别的worker进程中的连接要怎么发消息呢?(我理解的是,设置进程数目是2,代表有两个进程在监听9952这个端口,我开启了端口复用)
多进程模型直接用 gatewayWorker https://www.workerman.net/doc/gateway-worker/
此外你的问题很多人提过,重复的不想重复了:
https://www.workerman.net/doc/workerman/components/channel-examples.html
用这个
好的,已经看到了,感谢
同楼上,用 channel 可以解决这个问题:https://www.workerman.net/doc/workerman/components/channel.html
好的,已经看到了,感谢