php 调用一个 Worker的内部端口 要20秒才能返回状态

784559290
$worker->onWorkerStart = function () use ($worker) {

            // 开启一个内部端口,方便内部系统推送数据,Text协议格式 文本+换行符
            $inner_text_worker = new Worker('http://0.0.0.0:5898');
            $inner_text_worker->onMessage = function ($connection) use ($worker) {

                $data = input('post.');
                $data = json_encode($data);

                foreach ($worker->uidConnections as $connection) {
                    $connection->send($data);
                }

                // 返回推送结果

            };
            $inner_text_worker->listen();

            Timer::add(3, function () use ($worker) {
                $time_now = time();
                foreach ($worker->uidConnections as $connection) {
                    // 有可能该connection还没收到过消息,则lastMessageTime设置为当前时间
                    if (empty($connection->lastMessageTime)) {
                        $connection->lastMessageTime = $time_now;
                        continue;
                    }
                    // 上次通讯时间间隔大于心跳间隔,则认为客户端已经下线,关闭连接
                    if ($time_now - $connection->lastMessageTime > 25) {
                        $connection->close();
                    }

                }
            });
        };
2117 1 0
1个回答

keytehu

大哥,你$inner_text_worker->onMessage 里面都没给http客户端返回任何东西,http客户端当然收不到任何返回啊。

$inner_text_worker->onMessage 里面第一行加一句 $connection->send('我收到了'); 试下,也就是收到http请求后立刻http返回一句

  • 暂无评论
年代过于久远,无法发表回答
🔝