2013-08-27 2 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()을 사용하여, 사용자의 수를 얻을 수 있습니다.

관련 문제