我们当前需要将数据发送到多个连接的客户端,每个客户端都有一个唯一的通道名称,例如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);
}
});
});
有没有一种方法可以异步发送,同时它会逐个循环发送?
答案 0 :(得分:1)
io.emit调用是异步的。理想情况下,您应该再次调用它并等待使用回调。再次调用它。
最好的方法是使用异步库(https://github.com/caolan/async/,npm install asnyc
,并使用each()
方法。