我正在编写一个脚本,其中的逻辑表明,如果通过socket.io'创建房间'方法创建了房间的人,那就是:
client.on("createRoom", function (name) {
client.room = name;
client.join(client.room);
client.emit("update", "Welcome to room:" + name + ".");
});
多人可以通过其他方法加入同一个房间。我的问题是,如何实现一个解决方案 - 如果房间的所有者(由socket.io生成的唯一ID存储在我的脚本中并标记为'所有者')与服务器断开连接,则属于所有其他连接的客户端到同一个房间还断开?我知道我必须使用client.leave()方法,但我不确定如何将其应用于多个客户端。
答案 0 :(得分:0)
将客户端存储在数组中,作为对象。存储房间号码,如果他们拥有房产中的房间。在disconnect事件上,检查相关用户的ownsroom
属性,如果是,则遍历数组,搜索roomid
属性与断开连接的所有者匹配的其他客户端。当clients[i].roomid == disconnected.roomid
的if语句为true时,调用leave函数删除连接。
var i = 0;
while(i < clients.length){
if(clients[i].room == disconnected.room)
clients[i].leave();
++i;
}