Javascript SocketIO离开房间并加入新房间逻辑

Javascript SocketIO离开房间并加入新房间逻辑,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我想知道当我点击“新房间”时我如何离开房间 我的页面看起来像这样 <a href="#" onclick="joinChat()"> <h5 id="sangumee-Quarterican-KJ">sangumee</h5> </a> 左边的列表来自MySQL服务器,它获取我的聊天列表。每个房间名称都有id值,即房间名称。它还具有onclick功能,可以在客户端使用该功能 当我单击每个房间的名称并运行joinChat()函数时,我想在join

我想知道当我点击“新房间”时我如何离开房间

我的页面看起来像这样

<a href="#" onclick="joinChat()">
<h5 id="sangumee-Quarterican-KJ">sangumee</h5>
</a>

左边的列表来自MySQL服务器,它获取我的聊天列表。每个房间名称都有id值,即房间名称。它还具有onclick功能,可以在客户端使用该功能

当我单击每个房间的名称并运行joinChat()函数时,我想在joinChat()函数中

  • 使用室内插座
  • 在服务器端运行
    socket.leave(`${data.joinedRoomName}`)
  • 然后使用
    socket.join(`${data.joinedRoomName}`)加入新单击的文件室代码
  • 但我不知道在单击新房间时如何传递当前房间名称。所以第二步出现了问题

    看起来是这样的

    <a href="#" onclick="joinChat()">
    <h5 id="sangumee-Quarterican-KJ">sangumee</h5>
    </a>
    

    当插座尝试连接其他房间时,您可以取消连接其他房间:

     Object.keys(socket.room)
      .filter(it => it !== socket.id)
      .forEach(id => socket.leave(id));
    
    或者您只需在客户端(或服务器)上保留一个变量:

    然后,如果您加入,请将其发送到服务器并刷新:

    socket.emit('JoinRoom', {
        joinedRoomName,
        leave: current,
    });
    
    current = joinedRoomName;
    

    当插座尝试连接其他房间时,您可以取消连接其他房间:

     Object.keys(socket.room)
      .filter(it => it !== socket.id)
      .forEach(id => socket.leave(id));
    
    或者您只需在客户端(或服务器)上保留一个变量:

    然后,如果您加入,请将其发送到服务器并刷新:

    socket.emit('JoinRoom', {
        joinedRoomName,
        leave: current,
    });
    
    current = joinedRoomName;