Zaleta/wada korzystania z socketio heartbeats

Socket.io pozwala na użycie heartbeats do " sprawdzenia stanu zdrowia Socket.IO znajomości."Czym dokładnie są uderzenia serca i dlaczego powinienem lub nie powinienem ich używać?

Author: jhchen, 2011-08-15

1 answers

Heartbeat to mała wiadomość wysyłana od klienta do serwera (lub z serwera do klienta i z powrotem do serwera) w regularnych odstępach czasu, aby potwierdzić, że klient jest nadal w pobliżu i aktywny.

Na przykład, jeśli masz węzeł.aplikacja js obsługująca czat, a użytkownik nie mówi nic przez wiele minut, nie ma sposobu, aby stwierdzić, czy naprawdę są nadal połączone. Wysyłając hearbeat w określonym przedziale czasu (powiedzmy, co 15 sekund), klient informuje serwer, że wciąż tam jest. Jeśli minęło np. 20 sekund od momentu, kiedy serwer dostał bicie serca od klienta, prawdopodobnie został odłączony.

Jest to konieczne, ponieważ nie można zagwarantować czystego zakończenia połączenia przez TCP--Jeśli klient ulegnie awarii lub wydarzy się coś innego, nie otrzymasz pakietów zakończenia od klienta, a serwer nie będzie wiedział, że Klient się rozłączył. Ponadto, Socket.IO obsługuje różne inne mechanizmy (inne niż gniazda TCP) do transfer danych, a w takich przypadkach Klient nie wyśle (lub nie może) wiadomości o zakończeniu na serwer.

Domyślnie, a Socket.IO klient będzie wysyłał bicie serca do serwera co 15 sekund ( interwał bicia serca ), a jeśli serwer nie usłyszy od klienta w ciągu 20 sekund ( heartbeat timeout), uzna, że klient jest odłączony.

Nie wyobrażam sobie wielu przeciętnych przypadków użycia, w których prawdopodobnie nie chciałbyś użyć heartbeats.

 53
Author: Michelle Tilley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-19 19:25:05