如何强制多个客户端在socket.io中离开?

时间:2013-07-15 19:38:09

标签: javascript socket.io

我正在编写一个脚本,其中的逻辑表明,如果通过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()方法,但我不确定如何将其应用于多个客户端。

1 个答案:

答案 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;
}
相关问题