2011-08-25 6 views
5

Mam klienta socket.io podłączonego do serwera node.js. Jeśli zabiję plik node.js w wierszu poleceń, klient natychmiast zawiesza się (tzn. Zatrzymuje komunikację), ale przed rozłączeniem zdarzenia "rozłączenie" występuje ~ 20 sekundowe opóźnienie. Czy to zachowanie jest zgodne z projektem? Czy istnieje opcja konfiguracji, aby zmniejszyć opóźnienie w wystrzeliwaniu zdarzenia rozłączenia?Opóźnienie Socket.io w uruchamianiu zdarzenia "rozłącz"?

Wygląda na to, że to zachowanie zmieniło się w stosunkowo niedawnej (ostatnie 6 miesięcy) aktualizacji pliku socket.io. Zanim funkcja reconnect została wbudowana w samo gniazdo socket.io, zaimplementowałem własną logikę ponownego połączenia za pomocą funkcji obsługi zdarzeń "disconnect", a wtedy zdarzenie "disconnect" zostało uruchomione niemal natychmiast po zatrzymaniu komunikacji z serwerem.

Odpowiedz

6
+1

to nawet nie jest odpowiedź na pytanie, jak możesz to zaakceptować? Lub, aby wyjaśnić, jak bliski limit czasu rozwiązuje ten problem! – Iamisti

2

Myślę, że to prawdopodobnie wzór projektu. Klient może domniemywać, że serwer jest "tymczasowo" nieosiągalny (ruch sieciowy itp.) I zasadniczo będzie próbował go osiągnąć ... dopóki nie upłynie limit czasu klienta.

Wysyłam rozłączenie (socket.disconnect()) do serwera bezpośrednio od klienta i nie dostaję tego problemu.

Powiązane problemy