Websocket實現斷網重連

2021-10-05 16:13:25 字數 3367 閱讀 4335

websocket實現斷網重連

**如下:

定義的變數如下:

var lockreconnect =

false

;//避免重複連線

var wsurl =

"ws://localhost:8080/websocket/111"

;// websocket鏈結

var ws;

// websocket物件

首先判斷是否支援websocket

if

("websocket"

in window)

else

建立乙個websocket物件

function

createwebsocket()

catch(e

)}createwebsocket()

;// 建立websocket

建立了乙個websocketinit方法 對websocket進行初始化

function

websocketinit()

;// 斷開 web socket 連線成功觸發事件

ws.onclose

=function

(evt)

;// 接收服務端資料時觸發事件

ws.onmessage

=function

(evt)

;// 通訊發生錯誤時觸發

ws.onerror

=function

(evt);}

;

執行的方法

連線以後 重置心跳檢測

接收資料後

如果是正常的返回心跳資料

再執行心跳檢測

每次執行心跳檢測 向伺服器傳送一條資料 伺服器就會返回一條資料(只要在設定的延時內) 客戶端再接收到資料 就會重新呼叫心跳檢測方法

不過拿到任何訊息都說明當前連線是正常的

function

onopen

(evt)

function

onclose

(evt)

function

onmessage

(evt)

return;}

}function

onerror

(evt)

執行斷網重連的方法

設定延遲一直呼叫 createwebsocket方法連線

function

websocketreconnect

(url)

; lockreconnect =

true

;//沒連線上會一直重連,設定延遲避免請求過多

tt &&

cleartimeout

(tt)

;var tt =

settimeout

(function()

,5000);

}

心跳檢測的方法

每30s執行一次心跳檢測

每次執行心跳檢測 向伺服器傳送一條資料 伺服器就會返回一條資料(只要在設定的延時(30秒)內) 客戶端再接收到資料 就會重新呼叫心跳檢測方法

如果發生異常 就會呼叫ws.close();方法 close方法就會一直重複的呼叫重連方法 直到再次連線上伺服器 完成斷網重連!

//心跳檢測

var heartcheck =

, self.timeout);}

,this

.timeout)

}}

完整的**如下:

lang

="en"

>

>

charset

="utf-8"

>

name

="viewport"

content

="width=device-width, initial-scale=1.0"

>

>

documenttitle

>

head

>

>

>

var lockreconnect =

false

;//避免重複連線

var wsurl =

"ws://localhost:8080/websocket/111"

;// websocket鏈結

var ws;if(

"websocket"

in window)

catch(e

)}createwebsocket()

;// 建立websocket

function

websocketinit()

;// 斷開 web socket 連線成功觸發事件

ws.onclose

=function

(evt)

;// 接收服務端資料時觸發事件

ws.onmessage

=function

(evt)

;// 通訊發生錯誤時觸發

ws.onerror

=function

(evt);}

;function

onopen

(evt)

function

onclose

(evt)

function

onmessage

(evt)

return;}

}function

onerror

(evt)

function

websocketreconnect

(url)

; lockreconnect =

true

;//沒連線上會一直重連,設定延遲避免請求過多

tt &&

cleartimeout

(tt)

;var tt =

settimeout

(function()

,5000);

}//心跳檢測

var heartcheck =

, self.timeout);}

,this

.timeout)}}

}else

script

>

body

>

html

>

測試圖

Python 實現斷網自動重連

來所裡一年了,終於有了一台電腦,是小樂師兄淘汰給我的,很開心,因為用它程式設計智商有加成。但是問題就來了,我平時人在懷柔啊,怎麼才能用所裡的電腦搞科研呢?遠端自然是很簡單的,但是所裡每天晚上三天鍾會可恥地斷一次網,而且斷網必須要登入才能重連,為了不麻煩師兄,同時也讓我週末回來顯得很忙的樣子,我開始鼓...

實現websocket心跳重連

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

websocket 斷線重連

摘要websocket reconnect websocket是html5發布之後出現的一種新技術,說它是新技術,其實也不是多新的技術了,因為畢竟也有2 3年了,但是找了很多國內的例項,缺發現不多,不知道是它不好用呢,還是說這種技術原來就有缺陷呢,咱們暫且不說,今天我們就來介紹一下websocket...