Ổ cắm.io 1.4
Object.keys(io.sockets.sockets);
cung cấp cho bạn tất cả các ổ cắm được kết nối.
Socket.io 1.0
Kể từ socket.io 1.0, câu trả lời được chấp nhận thực tế không còn hợp lệ nữa. Vì vậy, tôi đã thực hiện một chức năng nhỏ mà tôi sử dụng như là một sửa chữa tạm thời:
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 cho Không có không gian tên trở thành
// 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 cho một không gian tên trở thành:
// 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');
Cũng xem câu hỏi liên quan này , trong đó tôi đưa ra một hàm trả về các ổ cắm cho một phòng nhất định.
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;
}
Ổ cắm.io 0,7
API không có không gian tên :
var clients = io.sockets.clients();
var clients = io.sockets.clients('room'); // all users from room `room`
Đối với một không gian tên
var clients = io.of('/chat').clients();
var clients = io.of('/chat').clients('room'); // all users from room `room`
Lưu ý: Vì có vẻ như API socket.io dễ bị phá vỡ và một số giải pháp dựa trên chi tiết triển khai, đây có thể là vấn đề tự theo dõi khách hàng:
var clients = [];
io.sockets.on('connect', function(client) {
clients.push(client);
client.on('disconnect', function() {
clients.splice(clients.indexOf(client), 1);
});
});