集群Netty Socketio發(fā)送消息,客戶端死活接收不到

題目描述的問題,困擾了(?д?; )我很久。本地開發(fā)調(diào)試都好好的,怎么部署到測(cè)試環(huán)境之后,本該發(fā)出去的消息,在Js客戶端死活收不到消息。各種懷疑排查,多次部署還是沒能改善。怎么辦?繼續(xù)排查。

這次我把與消息發(fā)送最直接關(guān)鍵的兩個(gè)對(duì)象Debug打印出來,這兩個(gè)對(duì)象就是服務(wù)端的SocketIONamespace和客戶端建立連接后保存Session的SocketIOClient。然后,發(fā)現(xiàn)了奇特的現(xiàn)象。多實(shí)例部署時(shí),少數(shù)的幾個(gè)客戶端都連接到了一個(gè)實(shí)例,而消息是從另外一個(gè)沒有任何客戶端連接的實(shí)例發(fā)出的。有了發(fā)現(xiàn),開始猜測(cè)netty socket IO server開發(fā)者沒能想到多實(shí)例少數(shù)交叉客戶端的情況,在檢測(cè)到實(shí)例沒有客戶端連接時(shí),是不能有服務(wù)端主動(dòng)發(fā)送消息的。它此時(shí)認(rèn)為沒有客戶端,你服務(wù)端的消息沒有接受者,干脆不發(fā)送了。沒有客戶端也不會(huì)知道。

而在集群多實(shí)例部署時(shí),當(dāng)前實(shí)例沒有客戶端,從當(dāng)前實(shí)例發(fā)送的消息,可以被其他實(shí)例的客戶端接收呀,自作主張不發(fā)送了,是什么意思?也許是沒理解作者的設(shè)計(jì)意圖,又或者是集群部署時(shí),沒有相互發(fā)現(xiàn)各自的存在??傊梢宰鳛橐粋€(gè)問題,在集群多實(shí)例部署時(shí)要考慮到。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981閱讀 16,211評(píng)論 2 11
  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,376評(píng)論 0 5
  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,346評(píng)論 0 15
  • redis集群分為服務(wù)端集群和客戶端分片,redis3.0以上版本實(shí)現(xiàn)了集群機(jī)制,即服務(wù)端集群,3.0以下使用客戶...
    hadoop_null閱讀 1,681評(píng)論 0 6
  • 曾經(jīng)懶惰的肥皂將不復(fù)存在 因?yàn)?我現(xiàn)在就要去做運(yùn)動(dòng)了 大汗淋漓之后 我將會(huì) 洗澡~
    肥皂rush閱讀 146評(píng)論 0 0

友情鏈接更多精彩內(nèi)容