在循环内发送多个发射

时间:2015-04-24 16:40:26

标签: node.js sockets websocket socket.io socket.io-1.0

我们当前需要将数据发送到多个连接的客户端,每个客户端都有一个唯一的通道名称,例如CHANNEL1,CHANNEL2,CHANNEL3等。当试图循环遍历所有通道时,例如30.000个通道。它发送第一个,然后等待循环结束然后发送其余的。

io.on('connection', function (socket){
  socket.on('chat message', function (msg){      
      for (i = 0; i < 30000; i++) {
        io.emit('CHANNEL' + i, msg);
      }
  });
});

有没有一种方法可以异步发送,同时它会逐个循环发送?

1 个答案:

答案 0 :(得分:1)

io.emit调用是异步的。理想情况下,您应该再次调用它并等待使用回调。再次调用它。

最好的方法是使用异步库(https://github.com/caolan/async/npm install asnyc,并使用each()方法。