在这里做了重连判断,重连后感觉之前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;
}
做挤掉线,重连后把client_id = 当前连接id的给close()掉;
前端js业务逻辑有问题。
连接断开时websocketonerror 和 websocketclose 可能都会触发,然后你这2个事件都执行了建立新的连接,原本想建立1个连接,实际上建立了2个。然后不断的裂变1变2,2变4,4变8,建立了N多个连接,收到重复的信息。
我觉得只在websocketclose里建立新连接就够了。
兄弟是你说的这回事,我误解的以为一个浏览器开着就是一个client_id,疏忽大意了