//WebSocket心跳
var ws = '';
createWebSocket();
function createWebSocket() {
try {
ws = new WebSocket(websocketAdd);
init();
} catch(e) {
console.log('catch');
reconnect(websocketAdd);
}
}
function reconnect(url) {
if(lockReconnect) {
return;
};
lockReconnect = true;
//没连接上会一直重连,设置延迟避免请求过多
tt && clearTimeout(tt);
tt = setTimeout(function() {
createWebSocket(url);
lockReconnect = false;
}, 2000);
}
var heartCheck = {
timeout: 10000, //60ms
timeoutObj: null,
serverTimeoutObj: null,
reset: function() {
clearTimeout(this.timeoutObj);
clearTimeout(this.serverTimeoutObj);
this.start();
},
start: function() {
var self = this;
this.timeoutObj = setTimeout(function() {
ws.send(JSON.stringify({
"ping": 18212558000
}));
self.serverTimeoutObj = setTimeout(function() {
ws.close(); //如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
}, self.timeout)
}, this.timeout)
},
}
function init() {
ws.onopen = function() {
console.log("open")
heartCheck.start();
};
ws.onmessage = function(event) {
console.log("online")
heartCheck.reset();
}
ws.onclose = function() {
console.log("close")
reconnect();
};
ws.onerror = function(err) {
console.log("error");
console,log(err);
reconnect();
};
}
//心跳end------------------------------
前端websocket心跳
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...