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

问题描述 投票:7回答:2

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

node.js sockets websocket socket.io
2个回答
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;
}

3
投票

也许你需要这个:io.sockets.connected

var clients = Object.keys(io.sockets.connected);

那么如果你需要一个套接字: var socket = io.sockets.connected[socket_id]

© www.soinside.com 2019 - 2024. All rights reserved.