关于workerman群发消息的一个小疑问

Jay.LI

环境: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这个端口,我开启了端口复用)

1107 3 1
3个回答

admin

多进程模型直接用 gatewayWorker https://www.workerman.net/doc/gateway-worker/

此外你的问题很多人提过,重复的不想重复了:

  1. https://www.workerman.net/q/10038 (2023-02-11)
  2. https://www.workerman.net/q/10040 (2023-02-13)
  3. xxxx
  • Jay.LI 2023-02-14
    1. 项目中已经使用了自建的聊天流程,现在换 gatewayWorker 有点麻烦 2. 如果可以换,就不需要这个提问了 3. 虽然回答并不是我想要的,还是感谢你的回答
静默
  • Jay.LI 2023-02-15

    好的,已经看到了,感谢

查表仔

同楼上,用 channel 可以解决这个问题:https://www.workerman.net/doc/workerman/components/channel.html

  • Jay.LI 2023-02-15

    好的,已经看到了,感谢

年代过于久远,无法发表回答
×
🔝