/ / Jak serwer wie, jak zamknąć połączenie WebSocket, gdy karta strony jest zamknięta - perl, websocket, webclient

Jak serwer wie, aby zamknąć połączenie websocket po zamknięciu zakładki strony - perl, websocket, webclient

Stworzyłem websocket (z perl Net :: WebSocket ::Serwer, ale myślę, że to nie ma znaczenia). Moje pytanie brzmi: kiedy zamknę kartę witryny (niekoniecznie całą przeglądarkę) serwer odłączy określone gniazdo (wywoływane jest moje zdarzenie rozłączenia). Jak serwer to wie? Nie mogę znaleźć prostego szczegółowego opisu.

Odpowiedzi:

4 dla odpowiedzi № 1

Jeśli przeglądarka zamknie jeden koniec gniazda (albojawnie przez zamknięcie lub niejawnie, ponieważ proces kończy działanie) serwer na drugim końcu połączenia z gniazdem zostanie powiadomiony, że gniazdo jest teraz zamknięte. To tylko część tego, jak działa TCP. Nawet jeśli wiadomość zgubi się, a serwer pomyśli, że gniazdo jest nadal otwarte, gdy próbował wysłać dane, w końcu okazałoby się, że drugi koniec nie potwierdzał pakietów i upuszczał połączenie.

W przypadku karty przeglądarki rozsądne jest założenie, że przeglądarka oczyści / zamknie wszystkie zasoby związane z zamykaną kartą.


1 dla odpowiedzi nr 2

Jak zamknąć połączenie TCP.

Każda strona kończy swój koniec połączeniaprzez wysłanie specjalnej wiadomości z ustawionym bitem FIN (wykończenie). Ta wiadomość, czasami nazywany FIN, służy jako żądanie zakończenia połączenia do inne urządzenie, a także możliwe przenoszenie danych jak zwykłe człon. Urządzenie odbierające FIN odpowiada potwierdzeniem FIN, aby wskazać, że zostało odebrane. Połączenie jako całość nie jest uważane za zakończone, dopóki obie strony nie zakończą procedury zamknięcia przez wysłanie FIN i otrzymanie ACK.