【发布时间】:2021-01-28 21:13:51
【问题描述】:
当我加入房间,然后离开路线返回,然后使用我建立的聊天室时,我收到的消息数量是我离开和重新加入次数的两倍。
当我硬刷新时,这个问题就消失了。
到目前为止,我已经尝试了所有能找到的方法,但都无法正常工作。
我在客户端尝试过,在beforeRouteLeave、beforeDestroy 和window.onbeforeunload 期间
-
this.$socket.removeListener("insertListener");--> 全部尝试过 this.$socket = nullthis.$socket.connected = falsethis.$socket.disconnected = truethis.$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)。
我想要做的就是不刷新,当我离开页面时,在此之前,用户可以离开房间,当他们返回时,他们可以重新加入,不会出现重复的消息。
我现在正在尝试仔细阅读源代码。
【问题讨论】:
标签: node.js express vue.js socket.io vue-socket.io