SocketIO广播速度太快



我想每秒向每个客户端广播一条消息(将其视为自定义心跳机制)。

所以NodeJS应用程序启动,套接字被创建,当我从客户端应用程序连接时,心跳消息被广播。我仍然在开发客户端应用程序,这意味着一直按F5并重新加载应用程序。新的客户端SocketIO连接是在负载时创建的,这导致心跳消息以高于1条消息/秒的速率到达客户端应用程序。

代码没有什么特别的——服务器端:

var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(8080);
io.sockets.on('connection', function(socket) {
  ...
  setInterval(function() {
    console.info('broadcasting heartbeat');
    socket.broadcast.emit('heartbeat', /* custom heartbeat*/);
  }, 1000);
  ...
});

客户端:

var socket = io.connect('localhost', { 'reconnect': false, port: 8080 });
socket.on('heartbeat', function(data) { console.log('heartbeat'); });
谁能给我一些建议,怎么了?由于

无需每次启动间隔。您可以存储intervalID,甚至在不需要时使用clearInterval(INTERVAL);将其清除。

var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(8080);
var INTERVAL;
io.sockets.on('connection', function(socket) {
  ...
  if (!INTERVAL) {
    INTERVAL = setInterval(function() {
      console.info('broadcasting heartbeat');
      socket.broadcast.emit('heartbeat', /* custom heartbeat*/);
    }, 1000);
  }
  ...
});

最新更新