SocketIO广播太快了

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

因此,NodeJS应用程序启动,套接字被创build,当我从客户端应用程序连接心跳消息广播。 我仍在开发客户端应用程序,这意味着始终打F5并重新加载应用程序。 新的客户端SocketIO连接是在加载时创build的,这会导致心跳消息以高于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'); }); 

有人可以给我一些build议有什么不对吗? 谢谢

每次不需要启动间隔。 您可以存储intervalID,甚至用clearInterval(INTERVAL);清除它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); } ... });