socket.io - 为套接字获取多个字段?

时间:2012-07-10 02:47:58

标签: node.js socket.io

当用户断开连接时,我有以下代码。我想用房间名称和用户名发出信号。

client.get('nickname', function(err, name) {
  client.get('room', function(err2, room) {
    io.sockets.in(room).emit('disconnect', name);
  });
});

我的问题是,有没有办法避免像这样包裹.get这些电话?对于我的应用程序,它们将很快加起来。我可以从一个get()命令获得多个值吗?或者我只是处理这一切都错了?

2 个答案:

答案 0 :(得分:4)

如果您需要获取大量值,请查看像async这样的流量控制库。例如,以下是parallel中来自客户端的get多个值的方法:

var async = require('async');

async.parallel([
  client.get.bind(this, 'nickname'),
  client.get.bind(this, 'room'),
  client.get.bind(this, 'anotherValue')
], function(err, results) {
  // here, `err` is any error returned from any of the three calls to `get`,
  // and results is an array:
  //    results[0] is the value of 'nickname',
  //    results[1] is the value of 'room',
  //    results[2] is the value of 'anotherValue'
});

答案 1 :(得分:1)

如果你拥有对象/数组中用户的所有属性,以及对象/数组中房间的所有属性,你仍然只需要这两个嵌套调用。你做对了。