Socket.io 1.4
Object.keys(io.sockets.sockets);
연결된 모든 소켓을 제공합니다.
Socket.io 1.0
socket.io 1.0부터 실제 허용되는 답변은 더 이상 유효하지 않습니다. 그래서 임시 수정으로 사용하는 작은 기능을 만들었습니다.
function findClientsSocket(roomId, namespace) {
var res = []
// the default namespace is "/"
, ns = io.of(namespace ||"/");
if (ns) {
for (var id in ns.connected) {
if(roomId) {
var index = ns.connected[id].rooms.indexOf(roomId);
if(index !== -1) {
res.push(ns.connected[id]);
}
} else {
res.push(ns.connected[id]);
}
}
}
return res;
}
네임 스페이스 가 없는 API 가됩니다.
// var clients = io.sockets.clients();
// becomes :
var clients = findClientsSocket();
// var clients = io.sockets.clients('room');
// all users from room `room`
// becomes
var clients = findClientsSocket('room');
네임 스페이스에 대한 API 는 다음과 같습니다.
// var clients = io.of('/chat').clients();
// becomes
var clients = findClientsSocket(null, '/chat');
// var clients = io.of('/chat').clients('room');
// all users from room `room`
// becomes
var clients = findClientsSocket('room', '/chat');
또한이 관련 질문을 참조하십시오 . 여기서 주어진 방의 소켓을 반환하는 함수를 제공합니다.
function findClientsSocketByRoomId(roomId) {
var res = []
, room = io.sockets.adapter.rooms[roomId];
if (room) {
for (var id in room) {
res.push(io.sockets.adapter.nsp.connected[id]);
}
}
return res;
}
Socket.io 0.7
네임 스페이스 가 없는 API :
var clients = io.sockets.clients();
var clients = io.sockets.clients('room'); // all users from room `room`
대한 네임 스페이스
var clients = io.of('/chat').clients();
var clients = io.of('/chat').clients('room'); // all users from room `room`
참고 : socket.io API가 깨지기 쉽고 일부 솔루션은 구현 세부 사항에 의존하기 때문에 클라이언트를 직접 추적해야 할 수도 있습니다.
var clients = [];
io.sockets.on('connect', function(client) {
clients.push(client);
client.on('disconnect', function() {
clients.splice(clients.indexOf(client), 1);
});
});