Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In Socket.IO, is 'heartbeat' an event that can be used to trigger other actions?

This exact code doesn't work, but, I was hoping something like it was:

io.sockets.on('connection', function(socket) {
    socket.on('heartbeat', function() {
        // Do something here...
    });
});

Is something like this possible? I mean, I know I can just make a different function that triggers every, say, 15 seconds using a setInterval:

io.sockets.on('connection', function(socket) {
    setInterval(function() {
        // Do something
    },15000);
});

But since the heartbeat is already running at this interval, why not make use of it?

In any case, any insight would be greatly appreciated.

like image 732
KyleFarris Avatar asked Jul 11 '12 19:07

KyleFarris


1 Answers

I think that I see what you're trying to do. There are a few exposed events that you can check here - list of Socket.io events - but there is no "heartbeat" event that you can tap into to fire at a set interval.

You're on the right track with the second piece of code -

setInterval(function() {
    socket.emit('heartbeat', someData);
}, 5000);

And on the client side -

socket.on('heartbeat', function(data) {
    console.log(data);
})
like image 80
Chance Chapman Avatar answered Nov 02 '22 06:11

Chance Chapman