nodejs发送所有客户端列表失败

时间:2013-09-10 17:22:00

标签: javascript node.js socket.io

JS。 目前我已经成功完成了几项测试

  • Hello world
  • 服务器 - 客户端与事件的通信
  • 很多房间

但我无法将客户端发送给客户,我使用 socket.io

我想这样做的原因是拥有当前客户的列表

编辑:

我需要为服务器端的每个用户存储信息


我尝试使用

var io = require('socket.io');
var socket = io.listen(9876);
socket.on('connection', function(client) {

client.join('room');
console.log('new client ' + client.toString());

client.in('room').emit('list', client ); //<-- Error here

client.on('message', function(event) {
    console.log('client message! ', event);
    client.send(event);
});

client.on('chat', function(data) {

    client.broadcast.in('room').emit('LDS', data);
    client.in('room').emit('LDS', data);
});

client.on('disconnect', function() {

    console.log('out');
});
});

但会抛出此错误

connections property is deprecated. Use getConnections() method

C:\Repos\InWeb\NO\node_modules\socket.io\lib\parser.js:75
  data = JSON.stringify(ev);
              ^

TypeError: Converting circular structure to JSON
at Object.stringify (native)

最初的想法是发送客户列表,比如

var listClients;

socket.on('connection', function(client) {

client.join('room');

listClients.push(client);

client.in('room').emit('list', listClients); //<-- But throws same error

我猜错误是由客户端上下文提供的

我可以解决它吗?

1 个答案:

答案 0 :(得分:0)

你发送整个对象客户端,你应该使用这样的东西

Socket.io Connected User Count

或创建名称和id的数组,并发送数组而不是整个节点对象。