前端检测断掉后重连socket服务器,多次重连后服务端推送过来的消息是多条,感觉之前的client_id依然是生效的

ces0135

在这里做了重连判断,重连后感觉之前client_id还依然有效,同一个客户端会受到服务端重复推送来的消息

websocketonerror() {
      this.initWebSocket();
    }
websocketclose(e){
       this.initWebSocket();
    }

    initWebSocket() {
      const wsuri = "ws://XX.XX.XX.XX";
      this.websock = new WebSocket(wsuri);
      this.websock.onopen = this.websocketonopen;
      this.websock.onerror = this.websocketonerror;
      this.websock.onmessage = this.websocketonmessage;
      this.websock.onclose = this.websocketclose;
    }
2846 2 0
2个回答

q13113671764

做挤掉线,重连后把client_id = 当前连接id的给close()掉;

  • 暂无评论
智佳思远

前端js业务逻辑有问题。
连接断开时websocketonerror 和 websocketclose 可能都会触发,然后你这2个事件都执行了建立新的连接,原本想建立1个连接,实际上建立了2个。然后不断的裂变1变2,2变4,4变8,建立了N多个连接,收到重复的信息。

我觉得只在websocketclose里建立新连接就够了。

  • ces0135 2020-01-16

    兄弟是你说的这回事,我误解的以为一个浏览器开着就是一个client_id,疏忽大意了

年代过于久远,无法发表回答
🔝