I can't seem to find out how to set the heartbeat options for socket.io? I'd love to be able to specify what happens when a "timemout" happens, and when the server hasn't gotten any response from the client for some time.
For some reason the disconnect event isn't always firing, even though it has passed over an hour without the client not being connected. This often happens with the standalone Java socket.io client
Socket.IO uses engine.io, which allows you to specify ping interval and ping timeout, like so:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http, {'pingInterval': 2000, 'pingTimeout': 5000});
(2 second interval and 5 second timeout is just an example. It might be to frequent for your use case)
For me the following worked:
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
io.set('heartbeat timeout', 4000);
io.set('heartbeat interval', 2000);
For package dependency versions:
"express": "^4.12.3",
"socket.io": "1.0"