用workman 的AsyncTcpConnection 异步访问外部wss端口,获取的message 返回出现问题
远程socket握手成功
Error: Call to a member function send() on null in /www/wwwroot/streaming.zznet.live/startwork.php:36
Stack trace:
#0 /www/wwwroot/streaming.zznet.live/vendor/workerman/workerman/Connection/TcpConnection.php(646): {closure}()
#1 [internal function]: Workerman\Connection\TcpConnection->baseRead()
#2 /www/wwwroot/streaming.zznet.live/vendor/workerman/workerman/Events/Event.php(193): EventBase->loop()
#3 /www/wwwroot/streaming.zznet.live/vendor/workerman/workerman/Worker.php(1638): Workerman\Events\Event->loop()
#4 /www/wwwroot/streaming.zznet.live/vendor/workerman/workerman/Worker.php(1429): Workerman\Worker::forkOneWorkerForLinux()
#5 /www/wwwroot/streaming.zznet.live/vendor/workerman/workerman/Worker.php(1403): Workerman\Worker::forkWorkersForLinux()
#6 /www/wwwroot/streaming.zznet.live/vendor/workerman/workerman/Worker.php(560): Workerman\Worker::forkWorkers()
#7 /www/wwwroot/streaming.zznet.live/startwork.php(45): Workerman\Worker::runAll()
$ws_worker = new Worker("websocket://0.0.0.0:2346");
// 启动4个进程对外提供服务
$ws_worker->count = 6;
// 当收到客户端发来的数据后返回hello $data给客户端
$ws_worker->onMessage = function(TcpConnection $connection, $data) {
$context_option = array(
'socket' => array(
// ip必须是本机网卡ip,并且能访问对方主机,否则无效
'bindto' => '202.**.**.192:2346',
)
);
// 发起异步连接
$con = new AsyncTcpConnection('ws://*******', $context_option);
// 设置以ssl加密方式访问
$con->transport = 'ssl';
$con->onConnect = function(AsyncTcpConnection $con) {
echo "远程socket握手成功\n";
$str = 'hello';
$con->send($str);
};
$con->onMessage = function(AsyncTcpConnection $con, $result) {
$connection->send($result , true);
};
$con->connect();
};
报错里文件及行数都有,看一眼就直到了呀,$connection未定义