websocket 心跳重連

2022-03-04 14:28:21 字數 714 閱讀 2582

websocket是什麼

websocket作用是來做訊息的實時推送

websocket的基本事件有onopen、onmessage、onerror、onclose這四個事件,onopen是連線已開啟,且可以通訊,onmessage是收到訊息,onerror是websocket發生錯誤,onclose是websocket連線關閉。

為什麼會進行心跳檢測

簡單地說就是:為了證明客戶端與服務端的連線是否活著。websocket 在使用過程中,如果遭遇網路問題等,這個時候服務端沒有觸發onclose事件,這樣會產生多餘的連線,並且服務端會繼續傳送訊息給客戶端,造成資料丟失。因此需要一種機制來檢測客戶端和服務端是否處於正常連線的狀態,心跳檢測和重連機制就產生了。

每隔一段指定的時間(計時器),向伺服器傳送乙個資料,伺服器收到資料後再傳送給客戶端,正常情況下客戶端通過onmessage事件是能監聽到伺服器返回的資料的,說明請求正常。

如果再這個指定時間內,客戶端沒有收到伺服器端返回的響應訊息,就判定連線斷開了,使用websocket.close關閉連線。

這個關閉連線的動作可以通過onclose事件監聽到,因此在 onclose 事件內,我們可以呼叫reconnect事件進行重連操作。

**實現:

Websocket心跳重連

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

websocket心跳重連機制

1 心跳重連的原因 心跳和重連的目的用一句話概括就是客戶端和服務端保證彼此還活著,避免丟包發生。websocket斷開有兩種情況 前端斷開 在使用websocket過程中,可能會出現網路斷開的情況,比如訊號不好,或者網路臨時關閉,這時候websocket的連線已經斷開,而不同瀏覽器有不同的機制,觸發...

實現websocket心跳重連

var userid userid val var lockreconnect false 避免ws重複連線 var ws null 判斷當前瀏覽器是否支援websocket var wsurl serverconfig.cyberhouse ws userid createwebsocket ws...