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); } ... });