1

我正在编写一个脚本,其中的逻辑表明,如果通过 socket.io 'create room' 方法创建了一个房间的人,则类似于:

client.on("createRoom", function (name) {
    client.room = name;
    client.join(client.room);
    client.emit("update", "Welcome to room:" + name + ".");
});

多人可以通过另一种方法加入同一个房间。我的问题是,如何实现一个解决方案 - 如果房间的所有者(socket.io 生成的唯一 ID 存储在我的脚本中并标记为“所有者”)与服务器断开连接,则所有其他连接的客户端属于到同一个房间还要断开?我知道我必须使用 client.leave() 方法,但我不确定如何将其应用于多个客户端。

4

1 回答 1

0

将客户端作为对象存储在数组中。存储房间号,如果他们拥有该房间的属性。在断开连接事件上,检查相关ownsroom用户的属性,如果是,则循环遍历数组,搜索roomid属性与断开连接所有者的属性匹配的其他客户端。当 if 语句为clients[i].roomid == disconnected.roomid真时,调用 leave 函数断开连接。

var i = 0;
while(i < clients.length){
    if(clients[i].room == disconnected.room)
        clients[i].leave();
    ++i;
}
于 2013-07-15T19:44:52.160 回答