Por lo que puedo decir, hay 2 valores que importan aquí: el servidor envía latidos al cliente cada heartbeat interval
segundos; el cliente responde directamente, si no hay respuesta, el servidor decide que el cliente está muerto. El cliente espera un latido del servidor durante heartbeat timeout
segundos desde el último latido (que obviamente debería ser mayor que heartbeat interval
). Si no ha recibido información desde el servidor en heartbeat timeout
segundos, se asume que el servidor está muerto (y comenzará desconectar/reconectar basado en las otras opciones que haya configurado.
Los valores por defecto son heartbeat interval = 25s
y heartbeat timeout = 60s
. Ambos elementos son . conjunto en el servidor, el heartbeat timeout
se envía al cliente al conectar
Cambio de la heartbeat timeout
para un único cliente es fácil:
var socket = io.connect(url);
socket.heartbeatTimeout = 20000; // reconnect if not received heartbeat for 20 seconds
Sin embargo en el servidor, el valor heartbeat interval
parece ser parte de un objeto compartido (el Administrador, que es lo que obtiene de su llamada var io = require("socket.io").listen(server)
), lo que significa que no se puede cambiar fácilmente para sockets individuales.
Estoy seguro de que con un poco de Socket.IO piratería debe ser capaz de hacer que suceda, pero es posible romper otras cosas en el proceso ...
No estoy seguro sobre el tiempo de espera del latido del corazón, pero si está utilizando socket.io-client hay algunas opciones útiles que pueden serle útiles, como 'connect timeout'' reconnection delay' 'max reconnection's – vinayr