GatewayClient 連接 GatewayWorker,短時(shí)間沒(méi)問(wèn)題,正常使用,但是 當(dāng)我在一個(gè)常駐內(nèi)存運(yùn)行的腳本里的時(shí)候,GatewayClient 只有開(kāi)始能用,過(guò)一段時(shí)間后發(fā)送消息就會(huì)等很長(zhǎng)時(shí)間,然后發(fā)不出去,報(bào)錯(cuò)找不到好像,
應(yīng)該是超時(shí)被斷開(kāi)還是什么原因,請(qǐng)問(wèn) GatewayClient類(lèi)里面如何實(shí)現(xiàn)重連呢,或者 設(shè)置永不斷開(kāi)之類(lèi)的
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; // 長(zhǎng)連接
$redis->subscribe(['__keyevent@0__:expired'], function ($r, $c, $msg) use ($roomPublic) {
if (str_starts_with($msg, 'room_pk_expire:')) {
//這里發(fā)送消息
時(shí)間一長(zhǎng),就會(huì)發(fā)不出去
}
});
由于代碼隱私問(wèn)題,部分業(yè)務(wù)代碼已去除
最新的 GatewayWorker
把 Gateway::$persistentConnection = true; 去掉
沒(méi)有 Gateway::$persistentConnection = true; 時(shí)GatewayClient 是短連接,沒(méi)有斷開(kāi)的說(shuō)法
但是我在 start_gateway 里設(shè)置了 $gateway->pingInterval = 50; 然后用 GatewayWorker 去連接常駐在內(nèi)存里運(yùn)行,也不會(huì)出現(xiàn)超時(shí)斷開(kāi)嗎
$gateway->pingInterval = 50 是控制客戶(hù)端和gateway進(jìn)程的連接,和gatewayClient沒(méi)關(guān)系,gatewayClient是一個(gè)sdk,用來(lái)給gateway進(jìn)程發(fā)送命令的,命令發(fā)送完 gatewayClient 和gateway連接就直接斷開(kāi)了,類(lèi)似http調(diào)用。所以不存在 gatewayClient 和gateway時(shí)間長(zhǎng)了斷開(kāi)的說(shuō)法,他們之間本來(lái)默認(rèn)就不是長(zhǎng)連接,沒(méi)有所謂“GatewayClient類(lèi)里面如何實(shí)現(xiàn)重連”的說(shuō)法