WebSocket掉线重连的解决办法(reconnecting-websocket.js的使用)
html5 的 WebSocket 帮我们实现了长连接功能,但实际使用中发现 WebSocket 链接还是不是非常稳定的,经常自我掉线了,下面就分享两种方法解决一下这个问题。
方法一
ReconnectingWebSocket 是一个小型的 JavaScript 库,封装了 WebSocket API 提供了在连接断开时自动重连的机制。
只需要简单的将:
替换成:
1 | ws = new ReconnectingWebSocket( 'ws://....' ); |
websocket 重连的脚本下载地址:https://github.com/joewalnes/reconnecting-websocket
方法二
非常严格的解决 webSocket 重连,包括网络断线后重连的解决方法:
1、websocket 重连的脚本(reconnecting-websocket.js):
https://github.com/joewalnes/reconnecting-websocket
2、监听网络状态的脚本(offline.js):
https://github.com/hubspot/offline
3、页面引用:上述脚本
4、JavaScript demo
01 | var socketStatus= false ; |
05 | $( '.big_toast div' ).html( '网络连接已断开!' ); |
06 | $( '.big_toast' ).css( 'left' , '45%' ); |
07 | $( '.big_toast' ).fadeIn( "fast" ); |
08 | $( '.big_toast' ).fadeOut(2000); |
09 | if (Offline.state === 'up' && websocket.reconnectAttempts>websocket.maxReconnectInterval){ |
10 | window.location.reload(); |
19 | function buildSocket(){ |
20 | if ( 'WebSocket' in window) { |
22 | } else if ( 'MozWebSocket' in window) { |
32 | websocket.onopen = function (evnt) { |
35 | t2=setInterval(tanchuang,3000); |
38 | websocket.onmessage = function (evnt) { |
40 | websocket.onerror = function (evnt) { |
43 | websocket.onclose = function (evnt) { |
最终的效果是:当网络断开连接后,会先重连3000次,如果3000次重连不上则浏览器放弃重连,开始监听网络状态,如果网络一恢复,则直接刷新页面,恢复数据正常。
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!