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...