如何在socket.io中始终加入同一房间?

时间:2019-03-08 22:54:49

标签: javascript node.js socket.io

我正在尝试使用socket.io制作一个聊天应用程序,我要做的是创建一个只有两个人的房间,如果这个房间已经有两个人了,那么创建另一个,依此类推,我的问题是说您加入了会议室10,但刷新了网页,因此它使您与会议室断开连接,另一个人与会议室2断开了连接,因此当您寻找空房间时,您将加入会议室2,而不是会议室10,我不能只使用常量作为名称,因为我需要在每次填满时动态创建另一个。

1 个答案:

答案 0 :(得分:0)

您可以存储用户所加入的房间名称或房间名称。{br /> 在页面刷新时,检查localStorage中是否有任何值,如果是,则使用该值作为您的命名空间

window.localStorage

let roomID = localStorage.roomID; // Try to get the ID from localStorage

if ( !roomID ) { // no ID found? Create room and store ID to localStorage
  // CREATE A NEW ROOM ID (someGeneratedRoomID) <<< YOUR LOGIC HERE
  roomID = localStorage.roomID = someGeneratedRoomID; // Store it
} 

// Connect
io.on('connection', function(socket){
  socket.join( roomID );
});

// Talk
io.to( roomID ).emit('some event');