Serwer socket.io bardzo opóźnił rejestrację rozłączeń klienta

Mam połączenie socket.io z wykorzystaniem xhr jako jedynego transportu. Kiedy ładuję aplikację do przeglądarki (testowanej w chrome i ff), gniazdo łączy się i wszystko działa dobrze, dopóki nie odejdę od strony. Jeśli przeładuję przeglądarkę, widzę, że klient wysyła zdarzenie „rozłącz”, ale zdarzenie rozłączenia serwera nie uruchamia się przez bardzo długi czas (prawdopodobnie po przekroczeniu limitu czasu pulsu klienta). Jest to problem, ponieważ wykonuję pewne prace porządkowe na serwerze, gdy klient rozłącza się. Jeśli klient przeładuje, otrzymuję wiele zdarzeń połączenia przed rozłączeniem. Próbowałem ręcznie wysłać wiadomość odłączenia od klienta w zdarzeniu „beforeunload” okna, ale bezskutecznie. Jakieś pomysły?

Debugowałem serwer socket.io i mogę potwierdzić, że Manager.prototype.onClientDisconnect jest trafiany tylko z powodów „close timeout”.

questionAnswers(1)

yourAnswerToTheQuestion