Socket.io pozwala używać pulsu do "sprawdzania kondycji połączeń Socket.IO". Czym dokładnie są bicie serca i dlaczego powinienem lub nie powinienem ich używać?Zaleta/wada korzystania z bitu socketio
Odpowiedz
Bicie serca to mała wiadomość wysyłana z klienta do serwera (lub z serwera do klienta iz powrotem do serwera) w okresowych odstępach czasu w celu potwierdzenia, że klient jest nadal aktywny.
Na przykład, jeśli masz aplikację Node.js obsługującą pokój rozmów, a użytkownik nic nie mówi przez wiele minut, nie ma sposobu, aby stwierdzić, czy nadal są podłączeni. Przesyłając sygnał dźwiękowy w ustalonym odstępie czasu (powiedzmy co 15 sekund), klient informuje serwer, że nadal tam jest. Jeśli to był np. 20 sekund od momentu, gdy serwer uzyskał bicie serca od klienta, prawdopodobnie został rozłączony.
Jest to konieczne, ponieważ: cannot be guaranteed a clean connection termination over TCP - jeśli klient ulegnie awarii, lub coś innego się stanie, nie otrzymasz pakietów terminacji od klienta, a serwer nie będzie wiedział, że klient został rozłączony. Co więcej, Socket.IO obsługuje różne inne mechanizmy (inne niż gniazda TCP) do przesyłania danych iw takich przypadkach klient nie będzie (lub nie może) wysyłać wiadomości o zakończeniu do serwera.
Domyślnie klient Socket.IO wyśle bicie serca do serwera co 15 sekund (pulsu interwał), a serwer nie słyszał od klienta w ciągu 20 sekund (timeout tętno) go uzna klienta za odłączony.
Nie mogę myśleć o wielu typowych przypadkach użycia, w których prawdopodobnie nie chcesz używać pulsu.
- 1. Pojemność "bitu danych" a "bitu górnego"?
- 2. Dart Nodejs i Socketio
- 3. Złapanie wartości bitu "upuszczenia"
- 4. Wywoływanie bitu MSYS z Windows cmd
- 5. Kolba: spokojny API i SocketIO Server
- 6. Jak emitować zdarzenie SocketIO na serwerze
- 7. Python - Flask-SocketIO wyślij wiadomość z wątku: nie zawsze działa
- 8. Kolba SocketIO wysyła wiadomość z serwera do pokoju
- 9. Demontaż wyliczeń bitu flag w SQL Server
- 10. Jak ustawić poziom precyzji dla bitu Perla?
- 11. MySQL: Najmniejszy typ danych dla jednego bitu
- 12. Tworzenie określonego bitu "0" w C++
- 13. Obsługa bitu dla znalezienia różnicy łańcuchów
- 14. Jak zachować uprawnienia do plików podczas korzystania z FileUtils.copyDirectory?
- 15. Metoda IOAcknowledge NIE działa dla SocketIO w systemie Android?
- 16. Próba utworzenia gniazda między serwerami za pomocą SocketIO i PHPws
- 17. gevent-socketio nginx uwsgi nie pracują razem na serwerze programistycznym
- 18. python.h nie lubi, gdy próbuje zainstalować gevent-socketio
- 19. Wiele pracownicy gevent-socketio nie z transportem XHR-wyborczym z powodu sesji
- 20. Sposób korzystania z TextAppearanceSpan
- 21. Sposób korzystania z addEventListener
- 22. Zaleta korzystania z Object.create
- 23. Sposób korzystania z ConfigurationManager.AppSettings
- 24. Co to jest skrót SHA-256 pojedynczego bitu "1"?
- 25. Program nie może się załadować po ustawieniu bitu setuid na
- 26. Najszybszy sposób uzyskania ostatniej znaczącej pozycji bitu w ulongu (C#)?
- 27. Jak mogę uzyskać dostęp do bitu znaku liczby w C++?
- 28. Czy Java optymalizuje dzielenie przez moce dwóch do przenoszenia bitu?
- 29. Jak sprawdzić, czy biblioteka statyczna została zbudowana, zawiera kod bitu?
- 30. django-socketio z selerem: wysłać do gniazda po wykonaniu zadania async w oddzielnym procesie
Niesamowite pytanie. –