WebSocket Ping versus TCP Keepalive via een proxy
Kies een levendigheidscontrole voor de WebSocket-tegenpartij in plaats van een levende TCP-socket te zien als bewijs dat het applicatiepad reageert.
Een levende TCP-socket, een reagerende WebSocket-tegenpartij en nuttige applicatievoortgang zijn verschillende waarnemingen:
| Bewijs | Wat het vaststelt |
|---|---|
| Levendigheid op TCP-niveau | Het gecontroleerde transportpad reageert op dat niveau |
| Een overeenkomende WebSocket Pong | De tegenpartij beantwoordde dat controlframe |
| Een applicatiebevestiging | De applicatie bevestigde een bewerking volgens haar eigen protocol |
Een forward proxy onderhoudt gewoonlijk afzonderlijke verbindingen richting client en bestemming. De TCP-tegenpartij van de client is de proxy, terwijl een Ping in een gevestigde tunnel naar het WebSocket-eindpunt reist.
Een overeenkomende Pong
Het protocol vereist dat een antwoordende Pong de applicatiegegevens van de Ping meedraagt. Gebruik die overeenkomst om een openstaande peiling te identificeren. Een ongevraagde Pong is toegestaan maar vraagt geen bevestiging; er een na elk databericht sturen levert ander bewijs.
Geef de voorkeur aan het door de bibliotheek ondersteunde heartbeatmechanisme. JavaScript in de browser heeft in plaats daarvan eenapplicatie-heartbeatcontractnodig. Kies intervallen en foutdrempels op basis van de werklast en het netwerkbeleid. Planningspauzes of een overbelaste event loop kunnen een agressieve drempel missen zonder vast te stellen dat het netwerk is uitgevallen.
Houd de ontvanger draaiende
De client heeft doorlopende I/O nodig om controlframes te ontvangen en te verwerken. Dat mechanisme blokkeren kan lokale honger op een storing laten lijken.
Ping zorgt voor tunnelverkeer, maar elke tussenlaag beslist wat aan zijn idle-beleid voldoet. Geen enkele heartbeat garandeert bescherming tegen een absolute levensduurgrens van de verbinding.
Een tegenpartij kan Ping beantwoorden terwijl zijn applicatie stopt met het produceren van updates, en een stille abonnement kan gezond zijn. Volg de laatste geldige Pong en een betekenisvolle applicatiegebeurtenis afzonderlijk wanneer beide ertoe doen. Bewaar bij een storing de route, verstreken tijden en de openstaande peiling, en sluit of herstel dan via de ondersteunde levenscyclus.