servidor socket.io muito atrasado no registro de desconexões do cliente

Eu tenho uma conexão socket.io usando xhr como seu único transporte. Quando eu carrego o aplicativo no navegador (testado em chrome e ff), o soquete se conecta e tudo funciona bem até que eu saia da página. Se eu recarregar o navegador, posso ver o evento 'desconectar' enviado pelo cliente, mas o evento de desconexão do servidor não é acionado por um tempo muito longo (presumivelmente, quando a pulsação do cliente expira). Isso é um problema porque eu faço algum trabalho de limpeza no servidor quando o cliente se desconecta. Se o cliente recarregar, recebo vários eventos de conexão antes que a desconexão seja disparada. Eu tentei manualmente a emissão de uma mensagem de desconexão do cliente no evento 'beforeunload' da janela também, mas sem sucesso. Alguma ideia?

Eu depurei o servidor socket.io, e posso confirmar que Manager.prototype.onClientDisconnect está sendo atingido apenas por razões de "fechamento do tempo limite".

questionAnswers(1)

yourAnswerToTheQuestion