GatewayClient 连接 GatewayWorker,短时间没问题,正常使用,但是 当我在一个常驻内存运行的脚本里的时候,GatewayClient 只有开始能用,过一段时间后发送消息就会等很长时间,然后发不出去,报错找不到好像,
应该是超时被断开还是什么原因,请问 GatewayClient类里面如何实现重连呢,或者 设置永不断开之类的
use GatewayClient\Gateway;
require __DIR__.'/socket/GatewayClient/Gateway.php';
require __DIR__.'/socket/Applications/mess_config.php';
$redis->pconnect('127.0.0.1', 6379);
Gateway::$registerAddress = '127.0.0.1:1235';
Gateway::$persistentConnection = true; // 长连接
$redis->subscribe(['__keyevent@0__:expired'], function ($r, $c, $msg) use ($roomPublic) {
if (str_starts_with($msg, 'room_pk_expire:')) {
//这里发送消息
时间一长,就会发不出去
}
});
由于代码隐私问题,部分业务代码已去除
最新的 GatewayWorker
把 Gateway::$persistentConnection = true; 去掉
也会,时间一长就会断开,是否在这个里面有方法保持长连接
没有 Gateway::$persistentConnection = true; 时GatewayClient 是短连接,没有断开的说法
ok
但是我在 start_gateway 里设置了 $gateway->pingInterval = 50; 然后用 GatewayWorker 去连接常驻在内存里运行,也不会出现超时断开吗
$gateway->pingInterval = 50 是控制客户端和gateway进程的连接,和gatewayClient没关系,gatewayClient是一个sdk,用来给gateway进程发送命令的,命令发送完 gatewayClient 和gateway连接就直接断开了,类似http调用。所以不存在 gatewayClient 和gateway时间长了断开的说法,他们之间本来默认就不是长连接,没有所谓“GatewayClient类里面如何实现重连”的说法