WebSocket Ping face à TCP Keepalive à travers un proxy
Choisissez un contrôle de vivacité du pair WebSocket plutôt que de considérer une socket TCP vivante comme la preuve que le chemin applicatif répond.
Une socket TCP vivante, un pair WebSocket qui répond et une progression applicative utile sont des observations différentes :
| Preuve | Ce qu'elle établit |
|---|---|
| Vivacité au niveau TCP | Le chemin de transport vérifié répond à ce niveau |
| Un WebSocket Pong correspondant | Le pair a répondu à cette trame de contrôle |
| Un accusé de l'application | L'application a confirmé une opération selon son propre protocole |
Un proxy direct maintient généralement des connexions distinctes vers le client et vers la destination. Le pair TCP du client est le proxy, tandis qu'un Ping à l'intérieur d'un tunnel établi voyage jusqu'au point de terminaison WebSocket.
Un Pong correspondant
Le protocole exige qu'un Pong de réponse porte les données applicatives du Ping. Servez-vous de cette correspondance pour identifier une sonde en attente. Un Pong non sollicité est autorisé, mais ne demande aucun accusé ; en envoyer un après chaque message de données fournit une preuve différente.
Préférez le mécanisme de battement de cœur pris en charge par la bibliothèque. Le JavaScript du navigateur a plutôt besoin d'un contrat de battement de cœur au niveau applicatif. Choisissez les intervalles et les seuils d'échec selon la charge et la politique réseau. Des pauses d'ordonnancement ou une boucle d'événements surchargée peuvent manquer un seuil agressif sans établir une panne du réseau.
Maintenez le récepteur en marche
Le client a besoin d'entrées-sorties continues pour recevoir et traiter les trames de contrôle. Bloquer ce mécanisme peut faire apparaître une pénurie locale comme une panne.
Ping génère du trafic de tunnel, mais chaque intermédiaire décide de ce qui satisfait sa politique d'inactivité. Aucun battement de cœur ne garantit une protection contre une limite absolue de durée de vie de la connexion.
Un pair peut répondre à Ping alors que son application cesse de produire des mises à jour, et un abonnement silencieux peut être sain. Suivez séparément le dernier Pong valide et l'événement applicatif significatif lorsque les deux comptent. En cas d'échec, conservez la route, les temps écoulés et la sonde en attente, puis fermez ou rétablissez via le cycle de vie pris en charge.