前幾天某某云機房跨國網路調整,有斷網操作。我們的服務器居然能檢測到網路斷開。。(recv回傳-1,錯誤碼WSAECONNRESET。沒有加心跳包)
按照我的理解,tcp連接中間的網路斷開,server和client都應該檢測不到的呀
這就比較尷尬了,我們是IM服務,IM server檢測到網路端開需要判斷是中間網路斷開(本想通過應用層心跳包判斷),還是client端(IM 代理節點)崩潰。
中間網路斷開:IM server上來自IM代理節點上的用戶資訊不會立即洗掉,等待IM代理節點重連。同時連接在IM代理節點上的用戶將不會感知到網路斷開。
IM代理節點崩潰:IM server將清除該代理節點上相關資訊。同時連接在IM代理節點上的用戶將會感知到。
uj5u.com熱心網友回復:
這玩意就跟在哪拔網線一樣,在client拔跟在中間節點拔是一樣的吧。除非中間網路斷開的時候先通知你。uj5u.com熱心網友回復:
為什么不會通知你?tcp四次握手 會發個rst給你,除非是對側不關閉客戶端,直接拔網線或同等操作。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/30295.html
標籤:網絡通信
