websocket是HTML5下一個不錯的網絡協議解決方案,有一個場景很多猿猿都會遇到,手機鎖屏后大約60秒,IOS會自動斷開websocket連接,連接丟失了,那我們的數據也就斷了。websocket 斷線重連方案如下:
ReconnectingWebSocket
reconnecting websocket是一個javascript封閉的websocket庫,非常小,壓縮后僅有3KB。它的功能是當websocket斷線后自動幫你重連。使用方法很簡單:
只要把
var ws = new WebSocket('ws://....');
替換成
var ws = new ReconnectingWebSocket('ws://....');
就行了,當websocket斷開着它會幫你自動重連,socket永不斷線!
它支持事件
onopen onmessage onmessage onmessage onclose // At this point the WebSocket instance is dead.
websocket 斷線重連原理實現
var ws = new WebSocket('ws:../../websocket');
ws.onmessage = function(msg){
console.log('msg:',msg);
//do something
};
ws.onclose = function(){
console.log('closed....');
};
var ws = new WebSocket('ws:../../websocket');
ws.onmessage = function(msg){
console.log('msg:',msg);
//do something
};
//把剛才干的事情重寫一遍
function reconnect (){
rews = new WebSocket('ws:../../websocket');
rews.onmessage = function(){
//dosomthing
};
rews.onclose = function(){
//dosomthing
};
}
//每隔5秒去調用一次
var disConnect = function(){
setTimeout(function(){
reconnect();
},5000);
}
//函數放在onclose里
ws.onclose = disConnect;
轉自 https://www.uedbox.com/websocket-reconnect/
