webscoket断线重连

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();
    },
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值