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

0

在这里做了重连判断,重连后感觉之前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;
}
已邀请:

q13113671764

赞同来自:

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

智佳思远

赞同来自:

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


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

要回复问题请先登录注册