websocket 断线重连解决方案
- 发表于
- javascript
websocket是HTML5下一个不错的网络协议解决方案,有一个场景很多猿猿都会遇到,手机锁屏后大约60秒,IOS会自动断开websocket连接,连接丢失了,那我们的数据也就断了。websocket 断线重连方案如下:
ReconnectingWebSocket
reconnecting websocket是一个javascript封闭的websocket库,非常小,压缩后仅有3KB。它的功能是当websocket断线后自动帮你重连。使用方法很简单:
只要把
1 |
var ws = new WebSocket('ws://....'); |
替换成
1 |
var ws = new ReconnectingWebSocket('ws://....'); |
就行了,当websocket断开着它会帮你自动重连,socket永不断线!
它支持事件
1 2 3 4 5 |
onopen onmessage onmessage onmessage onclose // At this point the WebSocket instance is dead. |
websocket 断线重连原理实现
1 2 3 4 5 6 7 8 |
var ws = new WebSocket('ws:../../websocket'); ws.onmessage = function(msg){ console.log('msg:',msg); //do something }; ws.onclose = function(){ console.log('closed....'); }; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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; |
原文连接:websocket 断线重连解决方案
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。