vue項目中使用webscoket心跳重連

首先在created定義心跳檢測對象

that.websock.send("ping")  send方法是webscoket自帶的一種給服務器發送消息的方法

that.heartCheck = heartCheck  表示把heartCheck對象等於在data上面定義的heartCheck 對象

然後把原來的heartCheck = null 來釋放掉 避免內存泄露

that.initWebpack() 表示webscoket初始化

在webscoket接收消息中 開啓心跳檢測this.heartCheck.start()

注意  心跳檢測重連主要是在websocketclose websocketerror這兩個這兩個函數裏面發生 

在網絡斷開的時候服務器端並沒有觸發onclose的事件。這樣會有:服務器會繼續向客戶端發送多餘的鏈接,並且這些數據還會丟失。所以就需要一種機制來檢測客戶端和服務端是否處於正常的鏈接狀態。因此就有了websocket的心跳了。還有心跳,說明還活着,沒有心跳說明已經掛掉了。所以需要心跳重連 

在網絡斷開 或者發生錯誤的時候webscoket會觸發兩個函數

this.lockReconnect 表示是否已經重連的開關避免請求過多

this.webscoketFlag 表示是否爲登錄頁面  如果是登錄頁面退出就不需要重連

注意 在退出的時候需要斷開webscoket  this.websock.close()而不是this.websock.onclose()  onclose()表示webscoket關閉後的回調而已 如果想要關閉webscoket 使用webscoket.close

文章參考https://www.cnblogs.com/tugenhua0707/p/8648044.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章