我想每秒向每个客户端广播一条消息(将其视为自定义心跳机制)。
因此启动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'); });
有人可以给我一些建议吗?感谢
答案 0 :(得分:3)
每次都不需要启动间隔。您可以存储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);
}
...
});