WebSocket Ping rispetto a TCP Keepalive attraverso un proxy
Scegliete un controllo di vitalità per il peer WebSocket invece di considerare un socket TCP vivo come prova che il percorso applicativo risponde.
Un socket TCP vivo, un peer WebSocket che risponde e un progresso utile dell'applicazione sono osservazioni diverse:
| Prova | Cosa stabilisce |
|---|---|
| Vitalità a livello TCP | Il percorso di trasporto verificato risponde a quel livello |
| Un WebSocket Pong corrispondente | Il peer ha risposto a quel frame di controllo |
| Un riscontro dell'applicazione | L'applicazione ha confermato un'operazione secondo il proprio protocollo |
Un proxy diretto mantiene di solito connessioni separate verso il client e verso la destinazione. Il peer TCP del client è il proxy, mentre un Ping dentro un tunnel stabilito viaggia fino all'endpoint WebSocket.
Un Pong corrispondente
Il protocollo richiede che un Pong di risposta porti i dati applicativi del Ping. Usate questa corrispondenza per identificare una sonda in sospeso. Un Pong non richiesto è ammesso, ma non chiede alcun riscontro; inviarne uno dopo ogni messaggio di dati fornisce una prova diversa.
Preferite il meccanismo di heartbeat supportato dalla libreria. Il JavaScript del browser ha invece bisogno di un contratto di heartbeat a livello applicativo. Scegliete intervalli e soglie di errore in base al carico e alla politica di rete. Le pause di pianificazione o un event loop sovraccarico possono mancare una soglia aggressiva senza dimostrare un guasto della rete.
Mantenete in funzione il ricevitore
Il client ha bisogno di I/O continuo per ricevere ed elaborare i frame di controllo. Bloccare questo meccanismo può far sembrare un'interruzione la scarsità locale.
Ping genera traffico nel tunnel, ma ogni intermediario decide cosa soddisfa la propria politica di inattività. Nessun heartbeat garantisce protezione da un limite assoluto di durata della connessione.
Un peer può rispondere a Ping mentre la sua applicazione smette di produrre aggiornamenti, e una sottoscrizione silenziosa può essere sana. Tenete traccia separatamente dell'ultimo Pong valido e dell'evento applicativo significativo quando contano entrambi. In caso di guasto, conservate il percorso, i tempi trascorsi e la sonda in sospeso, poi chiudete o recuperate tramite il ciclo di vita supportato.