国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

設(shè)備成功登陸,接受心跳指令時(shí)Gateway::isUidOnline($uid)判斷不在線(xiàn)

dou號(hào)

問(wèn)題一:worker大神,我這邊的設(shè)備已經(jīng)成功登陸了,并綁定了uid,在接受心跳指令的時(shí)候,我這邊做了一個(gè)uid是否在線(xiàn)的判斷,但是設(shè)備在第一次成功登陸,并發(fā)送心跳過(guò)來(lái)時(shí),Gateway::isUidOnline($uid)總是判斷不在線(xiàn),當(dāng)設(shè)備重新登陸后,再發(fā)送心跳時(shí),Gateway::isUidOnline($uid)會(huì)判斷在線(xiàn),我打印了$client_idarr,即uid綁定的clientid;
Gateway::bindUid($client_id,$uid);
$client_idarr = Gateway::getClientIdByUid($uid);
發(fā)現(xiàn)該變量有值,那么設(shè)備應(yīng)該是成功綁定client_id了,也打印了uid,發(fā)現(xiàn)uid也正常,但是Gateway::isUidOnline($uid)卻還是判斷不在線(xiàn),還有一點(diǎn)就是并不是所有設(shè)備都有這種情況,還請(qǐng)大神賜教

問(wèn)題二:

$gateway->pingInterval = 55;
$gateway->pingNotResponseLimit = 2;

$gateway->pingInterval = 110;
$gateway->pingNotResponseLimit = 1;

有什么不同嗎?

5654 3 0
3個(gè)回答

phpcreeper

問(wèn)題一:
個(gè)人感覺(jué)疑點(diǎn)有兩處:
(1)在調(diào)用到 Gateway::isUidOnline($uid) 時(shí),確認(rèn)下對(duì)應(yīng)的client_id是否由于某種原因?qū)е乱严戮€(xiàn)了?
(2)Gateway::isUidOnline($uid) 判斷是否在線(xiàn)的邏輯,其實(shí)內(nèi)部調(diào)用的正是判斷 $client_idarr = Gateway::getClientIdByUid($uid) 【你可以參看源碼】,那么據(jù)你所述$client_idarr有值,有值就表明 client_id 肯定是在線(xiàn)的,否則還得回到疑點(diǎn)(1)

問(wèn)題二:
(1)兩種寫(xiě)法均代表: 若客戶(hù)端連接 pingInterval * pingNotResponseLimit = 110 秒內(nèi)沒(méi)有任何請(qǐng)求,則服務(wù)端認(rèn)為對(duì)應(yīng)客戶(hù)端已經(jīng)離線(xiàn),服務(wù)端主動(dòng)關(guān)閉連接并觸發(fā)onClose回調(diào)。
(2)區(qū)別是:心跳檢測(cè)間隔時(shí)間和檢測(cè)頻率不一樣。

  • 暫無(wú)評(píng)論
dou號(hào)

@blogdaren一個(gè)是登錄指令,一個(gè)是心跳指令,登錄指令后uid綁定成功并打印出了對(duì)應(yīng)的clientid,但是一分鐘之后的心跳指令發(fā)過(guò)來(lái)時(shí),$client_idarr 卻沒(méi)有值了,對(duì)應(yīng)了您的疑點(diǎn)一,現(xiàn)在問(wèn)題就是并不清楚該設(shè)備為何會(huì)在綁定uid成功后短時(shí)間又掉線(xiàn),因?yàn)椴⒉皇撬械脑O(shè)備都這樣,只有部分設(shè)備出現(xiàn)了這種情況,而且這部分設(shè)備也不是一直會(huì)出現(xiàn)這樣情況,只要多登陸幾次這種情況就會(huì)消失,但是設(shè)備斷電重啟后又會(huì)這樣,多登陸幾次又會(huì)變正常

  • phpcreeper 2018-09-14

    不清楚你具體客戶(hù)端心跳邏輯以及服務(wù)端對(duì)心跳以及登錄邏輯的處理細(xì)節(jié),只能推測(cè)可能是:

    1. 心跳指令發(fā)過(guò)來(lái)時(shí),上次的連接已經(jīng)被干掉【比如在規(guī)定時(shí)間內(nèi)有些客戶(hù)端設(shè)備未回心跳包或未發(fā)送數(shù)據(jù)】,此時(shí)已經(jīng)是個(gè)新連接,然后由于未bindUid(),所以Gateway::isUidOnline($uid)會(huì)表現(xiàn)為離線(xiàn)。
    2. 建議你監(jiān)測(cè)下 onClose 回調(diào)以排查連接是否存在被干掉的情況。
    3. 要還不行,就請(qǐng) walkor 大大看看啥情況吧。
ymb

我也是遇到這個(gè)問(wèn)題
就是前端執(zhí)行一個(gè)心跳檢測(cè) 定時(shí)30秒內(nèi)發(fā)送一個(gè)數(shù)據(jù)到服務(wù)端維持連接
截圖
并我在心跳時(shí)候把獲取的東西都打印出來(lái)
截圖
獲取的數(shù)據(jù) 很迷惑 就是有時(shí)候 客戶(hù)端是否在線(xiàn) Gateway::isOnline 返回是 0 Gateway::isUidOnline 用戶(hù)是否在線(xiàn)是 返回 是 1 源碼的 綁定用戶(hù)id的 Gateway::getClientIdByUid 返回有數(shù)組
還有就是幾個(gè)用戶(hù)同時(shí)連接 短時(shí)間內(nèi) 總一兩個(gè)掉線(xiàn)的...
截圖
想問(wèn)一下作者解決了這個(gè)問(wèn)題了嗎?

  • walkor 2020-07-22

    服務(wù)端運(yùn)行命令 ps auxf,看下是不是運(yùn)行了多個(gè)gatewayWorker

  • ymb 2020-07-22

    感謝作者回復(fù) 剛看了 好像只是執(zhí)行了一個(gè)gatewayWorker
    10:01 0:00 _ WorkerMan: worker process YourAppGateway websocket://0.0.0.0:8282
    root 26458 0.0 0.2 218508 9632 ? S 10:01 0:00 _ WorkerMan: worker process YourAppGateway websocket://0.0.0.0:8282
    root 26459 0.0 0.3 220552 11688 ? S 10:01 0:02 _ WorkerMan: worker process YourAppGateway websocket://0.0.0.0:8282
    root 26460 0.0 0.2 218504 9632 ? S 10:01 0:00 _ WorkerMan: worker process YourAppGateway websocket://0.0.0.0:8282

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??