सॉकेट .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;
}
सॉकेट। 0.7
कोई नामस्थान के लिए एपीआई :
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`
नोट: चूंकि ऐसा लगता है कि सॉकेट.आईओ एपीआई के टूटने का खतरा है, और कुछ समाधान कार्यान्वयन विवरण पर भरोसा करते हैं, इसलिए यह ग्राहकों को ट्रैक करने की बात हो सकती है:
var clients = [];
io.sockets.on('connect', function(client) {
clients.push(client);
client.on('disconnect', function() {
clients.splice(clients.indexOf(client), 1);
});
});