内部socket.io客户端列表位置

时间:2017-01-19 08:40:47

标签: node.js sockets websocket socket.io

我想知道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"

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]