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