怎么用ping/pong协议来保持链接?

kerr

1、laravel框架
2、pingInterval=60
pingNotResponseLimit=1
pingData = '';
3、```php
Timer::add(50, function() use($businessWorker) {
echo "send ping to client--start\n";
$n = 0;
foreach($businessWorker->gatewayConnections as $connection) {
if ($connection->getStatus(true) !== 2) {
continue;
}
$connection->send(pack('H*', '890400000000'), true);
$n++;
}
echo "send ping to client--end-{$n}\n";
Events::$logger->info('sendping to client:'.$n);
});


依然不能保持链接,固定在3分钟的时候会被强制断开(1006)。
pingData设了'{"type":"@heart@"}'也没用,除非客户端那边返回一个值。
但是我只想通过ping/pong协议保持链接。因为客户端数据可能巨大
2860 1 0
1个回答

xiuwang

按照手册 pingNotResponseLimit=1 意思是客户端在一个心跳周期内没有给服务端发送数据就断开连接,所以客户端必须给服务端定时发送数据,不然就断开。

  • kerr 2021-07-01

    客户端可以,但不能用服务端发ping来保持

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