Socket.IO 只发送给所有客户端

Socket.IO only emitting to all clients

我的代码的右边部分是

io.sockets.on('connection', function(socket){
var interval = setInterval(function() {
    repaintGraph()
    socket.emit('set data chart', '{"series":[['+series+']]}');
}, 1000 );

这种情况下的图表,如果我有3个用户连接,图表在一秒内更新3次我需要在1秒内执行代码1次,无论客户端数量如何

尝试使用 socket.broadcast.emit('event',data)

您可以运行连接代码之外的间隔代码:

setInterval(function() {
  repaintGraph();
  io.emit('set data chart', '{"series":[['+series+']]}');
}, 1000);

io.on('connection', function() {
  ...
});

io.emit() 将每秒向所有连接的客户端广播消息。

代码中有一点效率低下,即使没有任何客户端连接,它也会每秒调用 repaintGraph(),但这使代码更容易。