我正在尝试建立一个基于 Socket.IO 的匹配系统。我已经设置了服务器,数据正常存储在数组中。现在我想知道这个:
• 当 10 名玩家加入主房间("队列")时,默认情况下处于连接状态,我如何创建一个具有唯一 ID 的新房间(即 lobby_982311298_3427834)并将这些人放入该房间。
• 对于接下来的 10 名玩家,生成一个新的唯一 ID 并将他们放入新房间。
谢谢。
在我的情况下,这是从数组中随机挑选的 2 个人,我用这样的事情做到了:
function newRoom(user1, user2){
users.forEach(function(user){
if(user.name == user1 || user.name == user2){
io.sockets.connected[user.id].join('room'+i);
}
});
rooms.push(io.nsps['/'].adapter.rooms['room'+i]);
i++;
}
其中user1
和user2
是具有名称和 id(即 socket.id)属性的对象。 forEach 检查存储用户的整个users
数组。
因此,您可能想要的不是"room"+i,而是roomname
具有给定字符串值的socket.join(roomname)
,在您的情况下可以是一些随机数串联或客户端的socket.ids。