【问题标题】:Internal socket.io clients list location内部 socket.io 客户端列表位置
【发布时间】:2017-06-03 21:15:26
【问题描述】:

我想知道 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,找到此信息时遇到的麻烦比我预期的要多。我正在使用版本 => "socket.io": "^1.7.2"

【问题讨论】:

标签: node.js sockets websocket socket.io


【解决方案1】:

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

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

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

【讨论】:

  • 可能是它,将对其进行测试 - 但具体来说,我需要套接字连接对象,而不是 id,所以它可能是 Object.values(io.sockets.connected)?
  • 然后 io.sockets.connected[socket_id]
【解决方案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;
}

【讨论】:

    猜你喜欢
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 2018-05-31
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多