websocket心跳重連機制

2021-10-01 12:55:52 字數 865 閱讀 3698

1、心跳重連的原因

心跳和重連的目的用一句話概括就是客戶端和服務端保證彼此還活著,避免丟包發生。

websocket斷開有兩種情況:

前端斷開:

在使用websocket過程中,可能會出現網路斷開的情況,比如訊號不好,或者網路臨時關閉,這時候websocket的連線已經斷開,而不同瀏覽器有不同的機制,觸發onclose的時機也不同,並不會理想執行websocket的onclose方法,我們無法知道是否斷開連線,也就無法進行重連操作。

後端斷開:

如果後端因為一些情況需要斷開ws,在可控情況下,會下發乙個斷連的訊息通知,之後才會斷開,我們便會重連。

如果因為一些異常斷開了連線,我們是不會感應到的,所以如果我們傳送了心跳一定時間之後,後端既沒有返回心跳響應訊息,前端又沒有收到任何其他訊息的話,我們就能斷定後端主動斷開了。

因此需要一種機制來檢測客戶端和服務端是否處於正常連線的狀態。通過在指定時間間隔傳送心跳包來保證連線正常,如果連線出現問題,就需要手動觸發onclose事件,這時候便可進行重連操作。因此websocket心跳重連就應運而生。

2、實現**

1)通過createwebsocket建立連線

2)建立init方法,初始化一些監聽事件,如果希望websocket連線一直保持, 我們會在close或者error上繫結重新連線方法。

3)重連操作,通過設定lockreconnect變數避免重複連線

4)心跳檢測

總結:

我們確認了後端單台伺服器的處理能力有限,因此。我們需要做集群。其次我們為了不讓前端關閉或**,後端不響應。我們需要設定心跳,定時清除無關的連線。

最後,我們需要有訊息確認機制,做到保證訊息的100%接收。

Websocket心跳重連

websocket心跳重連 最近的工作業務上有用到關於websocket的相關知識,本來打算用socket.io去完成,但是最後還是採用了自帶的websocket的方式完成需求 this.websocket.binarytype arraybuffer 現在想象一下有這麼乙個場景,如果網路狀態不佳,...

websocket 心跳重連

websocket是什麼 websocket作用是來做訊息的實時推送 websocket的基本事件有onopen onmessage onerror onclose這四個事件,onopen是連線已開啟,且可以通訊,onmessage是收到訊息,onerror是websocket發生錯誤,onclos...

理解WebSocket心跳及重連機制

在使用websocket的過程中,有時候會遇到網路斷開的情況,但是在網路斷開的時候伺服器端並沒有觸發onclose的事件。這樣會有 伺服器會繼續向客戶端傳送多餘的鏈結,並且這些資料還會丟失。所以就需要一種機制來檢測客戶端和服務端是否處於正常的鏈結狀態。因此就有了websocket的心跳了。還有心跳,...