WebSocket Ping versus TCP Keepalive přes proxy
Zvolte kontrolu životnosti protějšku WebSocket místo toho, abyste živý TCP socket považovali za důkaz, že aplikační cesta odpovídá.
Živý TCP socket, odpovídající protějšek WebSocket a užitečný postup aplikace jsou tři různá pozorování:
| Důkaz | Co prokazuje |
|---|---|
| Životnost na úrovni TCP | Testovaná transportní cesta na této úrovni odpovídá |
| Odpovídající WebSocket Pong | Protějšek odpověděl na tento řídicí rámec |
| Potvrzení aplikace | Aplikace potvrdila operaci podle vlastního protokolu |
Dopředná proxy obvykle udržuje oddělená spojení ke klientovi a k cíli. TCP protějškem klienta je proxy, zatímco Ping uvnitř zavedeného tunelu putuje ke koncovému bodu WebSocket.
Odpovídající Pong
Protokol vyžaduje, aby odpovídající Pong nesl aplikační data z Pingu. Tuto shodu použijte k rozpoznání nedokončené kontroly. Nevyžádaný Pong je povolen, ale nežádá potvrzení; jeho odeslání po každé datové zprávě poskytuje jiný důkaz.
Preferujte knihovnou podporovaný mechanismus srdečního tepu. JavaScript v prohlížeči místo toho potřebuje smlouvu o srdečním tepu na úrovni aplikace. Intervaly a prahy selhání volte podle zátěže a síťové politiky. Pauzy plánování nebo přetížená smyčka událostí mohou agresivní práh propásnout, aniž by prokázaly selhání sítě.
Udržujte přijímač v chodu
Klient potřebuje nepřetržitý vstup a výstup, aby přijímal a zpracovával řídicí rámce. Zablokování tohoto mechanismu může místní nedostatek jevit jako výpadek.
Ping vytváří tunelový provoz, ale každý prostředník sám rozhoduje, co splňuje jeho politiku nečinnosti. Žádný srdeční tep nezaručuje ochranu před absolutním limitem životnosti spojení.
Protějšek může odpovídat na Ping, i když jeho aplikace přestane vytvářet aktualizace, a tiché odběry mohou být zdravé. Sledujte poslední platný Pong a významnou událost aplikace odděleně, když záleží na obou. Při selhání uchovejte trasu, uplynulé časy a nedokončenou kontrolu, poté spojení uzavřete nebo obnovte podporovaným životním cyklem.