我想知道Socket.io是否内部进行簿记并允许用户检索客户列表,或者如果我们手动需要跟踪连接客户列表如下:
var Server = require('socket.io');
var io = new Server(3980, {});
const clients = [];
io.on('connection', function (socket) {
clients.push(socket);
socket.on('disconnect', function () {
clients.splice(clients.indexOf(socket),1);
});
});
socket.io存储连接列表,如:
io.connections
或
io.sockets
对于较新版本的socket.io,我遇到的麻烦比我预期的要多。我正在使用version => "socket.io": "^1.7.2"
答案 0 :(得分:4)
以下函数将为您提供一组套接字对象:
function clients(namespace) {
var res = [];
var ns = io.of(namespace || "/");
if (ns) {
Object.keys(ns.connected).forEach(function (id) {
res.push(ns.connected[id]);
});
}
return res;
}
答案 1 :(得分:3)
也许你需要这个: io.sockets.connected
var clients = Object.keys(io.sockets.connected);
那么如果你需要一个套接字:
var socket = io.sockets.connected[socket_id]