onMessage函数的connection属性是空的

yyds

bug描述

这里写描述
在客户端发消息时,服务端在onmessage函数打印连接对象为空,并且onWorkerStart进程启动时打印worker中connections为空数组,这是为啥

程序代码或配置

<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
use Workerman\Connection\TcpConnection;

// 使用websocket协议监听8282端口
$worker = new Worker('websocket://0.0.0.0:8282');
//  当浏览器(包括用户手机浏览器和电脑浏览器)发来消息时的处理逻辑
$worker->onMessage = function(TcpConnection $connection, $data)
{
    var_dump($data);
    $connection->send(json_encode($connection));
};
// 进程启动时设置一个定时器,定时向所有客户端连接发送数据
// $worker->onWorkerStart = function($worker)
// {
    // echo json_encode($worker);
        // 遍历当前进程所有的客户端连接,发送当前服务器的时间
        // for($a=0;a<count($worker->connections);a++){
            // $worker->connections[$a]->send(time());
        // }
// };
Worker::runAll();
836 1 0
1个回答

walkor

打印连接对象用var_dump($connection);,不是所有对象都支持json_encode序列化。
onWorkerStart是进程启动时就执行,这时候还没有任何客户端连到服务上,所以$worker->connections为空。

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