首页 > 解决方案 > 来自服务器进程计时器的 Swoole 错误 9009 消息,而不是 Worker 进程回调?

问题描述

我使用 Swoole 作为 WebSocket 服务器。每秒一次,我需要向所有连接的 WS 客户端广播一条消息。

天真的方法:我$server->tick()在启动服务器之前设置了一个服务器计时器:

$this->server->tick(1000, function () {
    $message = 'hello';
    foreach ($this->server->connections as $fd) {
        $this->server->push($fd, $message);
    }
});

出现错误:

[2020-05-05 12:23:56 #21985.2] 错误 swServer_tcp_send (ERRNO 9009) 无法将数据发送到主进程中的连接

不是从 Master 而是从 Worker 进程推送 WebSocket 消息的正确方法是什么?

标签: phpwebsocketswoole

解决方案


推荐阅读