export default {
name: 'WEB',
data () {
return {
connected: false, //连接状态
reConnectCount: 0 //重新连接次数
}
},
methods:{
//重新连接scoket
reconnect () {
let delay = Math.random() * 10000;
let self = this;
setTimeout(function () { //设置一个随机10秒内时间,减轻服务器压力
self.startReconnectLoop();
}, delay);
},
startReconnectLoop () {
let self = this;
let conn = setInterval(function () { //没连接上会一直重连,设置延迟避免请求过多
if (self.reConnectCount < 12 && self.connected === false) { //给用户12次重新连接的机会
self.initWebSocket();
} else {
clearInterval(conn);
return;
}
}, 5000);
},
//scoket 通讯
initWebSocket () {
if (this.connected) return;
this.reConnectCount++;
const wsuri = "ws://XXXXXXXXXXX"; //测试地址
this.websocket = new WebSocket(wsuri);
this.websocket.onopen = this.setOnopenMessage;
this.websocket.onmessage = this.setOnmessageMessage;
this.websocket.onclose = this.setOncloseMessage;
},
//连接关闭的回调
setOncloseMessage () {
// this.websocket.close() 直接关闭
this.connected = false;
this.reconnect();
},
}
}
webscoket断线重连
最新推荐文章于 2024-08-23 16:11:49 发布