2014-06-07 12 views

Odpowiedz

3

Technicznie tak. Chociaż protokół WebSocket ma ramki ping/pong, a każdy z tych dwóch końców może okresowo wysyłać pingi i spodziewać się pongów jako odpowiedzi, w przeciwnym razie zabiłoby to połączenie.

Byłby bardzo zły pomysł, aby nie wdrożyć mechanizmu "keep alive", nie będziesz w stanie stwierdzić, które połączenia są rzeczywiście połączone lub nieprawidłowo zamknięte.

http://blog.stephencleary.com/2009/05/detection-of-half-open-dropped.html

+1

Niektórzy z nas wierzy, utrzymywanie aktywności to duża brodawka na TCP, co niepotrzebnie kruchy na niską przepustowość, linki niskiej niezawodność (_e.g._, amatorskich łączności satelitarnej). –

+3

Nie zapomnij o zasobach nie związanych z przepustowością. W większości systemów otwarte połączenie TCP (_e.g., WebSocket) zużywa wiele ograniczonych zasobów, nawet bez ruchu pakietowego. Pamięć bufora i bloki sterujące połączeniem są najbardziej rozpowszechnione, ale w niektórych systemach również numery portów. –

+1

Ramki Ping/Pong mogą być tak małe jak dwa bajty, a posiadanie tysięcy połączeń przy niewielkiej aktywności nie stanowi problemu dla żadnego nowoczesnego komputera. Wykonuję testy wydajności z tysiącami ich na moim laptopie jako serwer. Ponieważ urządzenia przenośne mogą utracić połączenie bez odpowiedniego zamknięcia połączenia, zalecane jest posiadanie mechanizmu utrzymywania aktywności. – vtortola

Powiązane problemy