当我加入房间,然后离开路线返回,然后使用我建立的聊天室时,我收到的消息数量是我离开和重新加入次数的两倍。
当我硬刷新时,这个问题就消失了。
到目前为止,我已经尝试了所有我能找到的东西,但一直无法让它工作。
我在客户端尝试过,beforeRouteLeave
在beforeDestroy
和window.onbeforeunload
this.$socket.removeListener("insertListener");
--> 尝试了所有this.$socket = null
this.$socket.connected = false
this.$socket.disconnected = true
this.$socket.removeAllListeners()
this.$socket.disconnect()
在相同的事件中,我还发送了一个this.$socket.emit("leaveChat", roomId)
,然后在服务器端在io.on("connection")
接收器内部尝试了以下操作socket.on("leaveChat", function(roomId) {})
:
socket.leave(roomId)
--> 根据文档,这是应该工作的;socket.disconnect()
socket.off()
- 似乎已被弃用socket.removeAllListeners(roomId)
我尝试了很多其他的事情,我不记得了,但如果我这样做了,我会更新帖子。
要么它以某种方式断开连接,并且在重新加入时,以前的听众或某些东西仍然存在,这意味着所有消息都收到*次重新加入。或者,如果我断开连接,我似乎无法重新连接。
加入时,我向服务器发送房间 ID 并使用 socket.join(roomId)。
我想要做的就是不刷新,当我离开页面时,在此之前,用户可以离开房间,当他们返回时,他们可以重新加入,不会出现重复的消息。
我目前正在尝试仔细阅读源代码。