Dylan Cross
Dylan Cross

Reputation: 5986

Socket IO detect when client has lost connection

I need to be able to detect when a user has lost connection to the socket, it doesn't seem that socket.on("disconnect") is being called when I just close my laptop, so it doesn't run the ajax call that needs to run in order to update the database to mark the user as offline. How could I check if the connection has been closed or whatever?

Upvotes: 12

Views: 9849

Answers (2)

sja
sja

Reputation: 2412

As mentioned here https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO, Socket.IO has it's own heartbeat implementation. But the defaults are a 25s interval and a 60s threshold for a lost connection.

So my advice: Set the defaults as you expect on testing. Otherwise you may miss the threshold.

Example:

socket.set("heartbeat timeout", 10);
socket.set("heartbeat interval", 5);

Upvotes: 6

DomA
DomA

Reputation: 136

we came across this too and as mentioned above use our own heartbeat timer.

For example the server will emit a heartbeat every 5 seconds (we simple send out server time). The client has an 11 second timeout so it has 2 chances to catch the heartbeat. If it receives the heartbeat we reset the timer. If we miss both heartbeats the timeout function is run and you do whatever you want there.

Fairly straightforward.

Upvotes: 2

Related Questions