Servidor socket.io muy retrasado en el registro de desconexiones de clientes.

Tengo una conexión socket.io usando xhr como su único transporte. Cuando cargo la aplicación en el navegador (probado en chrome y ff), el socket se conecta y todo funciona bien hasta que me alejo de la página. Si vuelvo a cargar el navegador, puedo ver que el evento de "desconexión" es enviado por el cliente, pero el evento de desconexión del servidor no se dispara durante mucho tiempo (probablemente cuando el latido del cliente se apaga). Esto es un problema porque hago algunos trabajos de limpieza en el servidor cuando el cliente se desconecta. Si el cliente se vuelve a cargar, obtengo varios eventos de conexión antes de que se active la desconexión. También he intentado emitir manualmente un mensaje de desconexión del cliente en el evento de 'descarga previa' de la ventana, pero no ha servido de nada. ¿Algunas ideas?

Depuré el servidor socket.io, y puedo confirmar que Manager.prototype.onClientDisconnect solo está siendo golpeado por razones de "tiempo de espera de cierre".

Respuestas a la pregunta(1)

Su respuesta a la pregunta