实现websocket重连很简单:只需要知道断网到浏览器约定时限等一些异常情况都会触发onclose和onerror,所以理论上,我们只要在onclose和onerror时,重新创建长连接就可以。
实现websocket重连的代码如下
var webSocketUrl = "ws://localhost:8899/tv/ws";
var ws = new WebSocket(webSocketUrl);
createWebSocket(webSocketUrl);
/**
* 重连,webSocket连接未创建或者不是连接成功的状态,重新连接
*/
function reconnect(url) {
setTimeout(function(){
createWebSocket(url)
},500);
}
/**
* 实例websocket
*/
function createWebSocket(url) {
try {
if ('WebSocket' in window) {
ws = new WebSocket(url);
} else if ('MozWebSocket' in window) {
ws = new MozWebSocket(url);
} else {
_alert("当前浏览器不支持websocket协议,建议使用现代浏览器",3000)
}
initWebSocket();
}catch (e) {
reconnect(url);
}
}
/**
* 初始化事件函数
*/
function initWebSocket () {
ws.onopen = function (evt) {
console.log("websocket连接成功");
}
ws.onmessage = function(evt) {
console.log("websocket消息: ", JSON.parse(evt.data));
//此处放渲染函数
}
ws.onclose = function () {
reconnect(webSocketUrl);
};
ws.onerror = function (err) {
reconnect(webSocketUrl);
};
}