【问题标题】:Socket.io user still receiving messages after disconnectionSocket.io 用户断开连接后仍然收到消息
【发布时间】:2021-05-31 03:57:23
【问题描述】:

我的代码允许人们加入他们选择的房间,但出于某种原因,即使他们的消息没有发送到他们离开的房间,他们仍然会收到来自他们离开的房间的消息。

服务器代码:

socket.on('create', function (msg) {
     socket.leave(msg.currentRoom);
     socket.join(msg.room);
    
  });

客户端代码:

var socket = io.connect('https://nova.broyster.repl.co');

var message = document.getElementById("message"),
username = document.getElementById("username"),
room = document.getElementById("roomm"),
feedback = document.getElementById("feedback");
pastRoom = room.value;

document.getElementById("roomSubmit").addEventListener('click', function() {
   
   socket.emit('create', {
     room: room.value,
     currentRoom: pastRoom
     });
});

【问题讨论】:

  • 嘿布罗迪,你有什么办法解决这个问题?
  • 我已经尝试让消息等于聊天框的值,这样它就不会离开错误的房间。结果确认问题出在其他地方。它似乎只是加入新房间,只向那些新房间发送消息,但仍接收来自旧房间的消息。

标签: javascript html node.js sockets socket.io


【解决方案1】:

离开房间后,请断开插座。 https://socket.io/docs/v3/client-api/#socket-disconnect

socket.Disconnect();

【讨论】:

  • 用户似乎不再接收消息。这很好,但我仍然希望他们从新房间接收消息:/
【解决方案2】:

我想通了。 我正在发送一个离开并重新加入同一个房间的事件,因为我将变量 pastRoom 设置为与未来房间相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-26
    • 2013-11-21
    • 2013-10-27
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2011-01-12
    • 2018-02-09
    相关资源
    最近更新 更多