2013-08-27 61 views
0

在我的劇本中,我加入了多個房間,而且工作很棒。獲取指定的房間清單

服務器:

io.sockets.on("connection", function(socket) { 
    socket.on("join", function(room) { 
     socket.join(room); 
    }); 
}); 

客戶:

socket.emit("join", "website"); 
socket.emit("join", "user"); 
socket.emit("join", "front"); 

但是,如果我嘗試通過io.rooms一一列舉,我得到由空鑰匙和房間,但他們的ID的數組(的一個奇怪的物體我猜),而不是他們的名字。

{ '': 
    [ 'FcETdaJ3P4R-IyGdevLj', 
    '9Qv2tEe3-IrKleFSevLk', 
    'F6G6nq5r8lM_nI-ievLl' ] } 

如何取回的客房,配備連接的用戶數命名列表,例如:

{ 
    "website": 6, 
    "front": 4, 
    "user": 1, 
} 

回答

0

io.rooms是列出房間的正確方法。對象中的鍵是房間的名稱,數組是所連接客戶端的ID。 ''是默認房間,所以當您嘗試登錄時似乎沒有人連接到任何房間。

0

變量io.sockets.manager.rooms將爲您提供全局房間,所有其他房間以及這些房間中客戶端的ID。

console.log(io.sockets.manager.rooms); 

rooms: { 
    '': [ 
    'IDJYUhL2RMNGiulk5Aii' 
    ], 
    'room1': [ 
    'IDJYUhL2RMNGiulk5Aii', 
    'dTtHIdIzSfV96kbu5Aij' 
    ], 
    'room2': [ 
    'dTtHIdIzSfV96kbu5Aij' 
    ] 
} 

因此,要獲得用戶的數量,只在用戶列表中使用length()