websocket断线重连的⽅法
我们在是有websocekt的时候,有的时候由于某些原先websocket会断开连接,我们需要重现连接,该如何实现呢?这就需要我们仔细研究websocket的api的使⽤了。
⾸先我们要熟悉如下⼏个api
1、连接websocket的服务器的websocekt函数
2、websocekt断开后触发的onclose函数
由上⾯这两个函数就可以了,⼤致思路梳理⼀下:
1、⾸先开发⼀个函数websocketinit,函数主要是websocket的连接逻辑,监听信息,发送信息
2、监听onclose事件,onclose触发后重新执⾏websocketinit事件
思路有了⼤致代码如下:
function webSocketInit(service){
//1、初始化ws
//2、监听onclose事件重新执⾏websocketInit函数
}
具体代码如下:
//1.创建websocket客户端
var host = window.location.host; #IP
var ut = "{{ ut }}";
var wsServer = 'wss://' + host + '/notify/wxlogin?ut=' + ut;
var timeConnect = 0;
webSocketInit(wsServer);
//socket初始化
function webSocketInit(service) {
var ws = new WebSocket(service);
console.log("已连接TCP服务器");
ws.send('Hello WebSockets!');
};
console.log('Received Message: ' + evt.data);
data = JSON.parse(evt.data);
console.log(data);
if (data.status != 0) {
alert("扫码错误");
ws.close();
}
if (data.data.wx_login == 1) {
//window.location.href = "" + host + "/admin"
window.location.href = "/admin"
}
if (data.data.wx_login == 0) {
//alert(ssage)
$(".qr_code").css("display", "none");
$(".tips").text(ssage)
}
console.log(data.data);
};
console.log('服务器已经断开');
reconnect(service);
};
}
// 重连
function reconnect(service) {
// lockReconnect加锁,防⽌onclose、onerror两次重连 timeConnect++;
console.log("第" + timeConnect + "次重连");
/
/ 进⾏重连
setTimeout(function () {
webSocketInit(service);
}, 1000);
}
// ⼼跳 * 回应
websocket和socketsetInterval(function () {
var websocket = new WebSocket(wsServer);
websocket.send('');
}, 1000 * 100)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论