Javascript 将连接用户发送到客户端会导致范围错误

Javascript 将连接用户发送到客户端会导致范围错误,javascript,node.js,Javascript,Node.js,我正在尝试发送一组连接到服务器的用户,并将它们发送到客户端,在那里我将对它们进行循环 app.js io.on('connection', function (socket) { socket.on('users', function (data) { var clients = io.sockets.sockets; socket.emit('clients', { user : clients }); }); }); index.html

我正在尝试发送一组连接到服务器的用户,并将它们发送到客户端,在那里我将对它们进行循环

app.js

io.on('connection', function (socket) { 
    socket.on('users', function (data) {
        var clients = io.sockets.sockets;
        socket.emit('clients', { user : clients });
    });
});
index.html

socket.emit('users', { });

socket.on('clients', function(data) {
    console.log(data);
    //for(var obj in data) {
    //  console.log(data[obj]);
    //}
});
我遇到的问题是,当试图将用户传递给客户端时,它抛出了一个Range错误

有两个问题-

  • 我这样做对吗?我不熟悉node.js和网络/服务器编码

  • 为什么我会得到一个错误


  • 因为,在注释中,您显示它是一个,它看起来像是由
    io.sockets.sockets
    指向的对象在某处有一个循环引用

    根据您在问题中所说的,我在这里做一个假设,但由于您只是尝试发送已连接用户的列表,也许您可以在将其发送给客户端之前综合
    客户端
    列表:

    io.on('connection', function (socket) { 
        socket.on('users', function (data) {
            var clients = io.sockets.sockets.map(function (client) {
              // Derive some value---anything---from the `client` value. Once
              // done that, return the resulting client value. Below, you can
              // see that I have derived nothing, but I recommend that you *do*
              // derive *something*.
              return client;
            });
            socket.emit('clients', { user : clients });
        });
    });
    

    使用stacktrace?socket.emit('clients',{user:clients})时,确切的错误是什么;将该数组发送到客户端时出现问题抱歉,我的意思是你说
    “它抛出了一个RangeError”
    。请在问题中包括全部错误。否则很难判断。这就是全部错误,这是它显示的唯一一行Hanks,“超出了最大调用堆栈大小”是一个关键的细节。