我想知道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"
以下函数将为您提供一组套接字对象:
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;
}
也许你需要这个:io.sockets.connected
var clients = Object.keys(io.sockets.connected);
那么如果你需要一个套接字:
var socket = io.sockets.connected[socket_id]