我想每秒向每个客户端广播一条消息(将其视为自定义心跳机制)。
所以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);
}
...
});