WebSocket Ping nasuprot TCP Keepalive kroz proxy
Odaberite provjeru živosti WebSocket partnera umjesto da živ TCP socket smatrate dokazom da putanja aplikacije odgovara.
Živ TCP socket, partner WebSocket koji odgovara i koristan napredak aplikacije različita su zapažanja:
| Dokaz | Što utvrđuje |
|---|---|
| Živost na razini TCP-a | Provjerena transportna putanja odgovara na toj razini |
| Odgovarajući WebSocket Pong | Partner je odgovorio na taj kontrolni okvir |
| Potvrda aplikacije | Aplikacija je potvrdila operaciju prema vlastitom protokolu |
Posrednički proxy obično održava odvojene veze prema klijentu i prema odredištu. TCP partner klijenta je proxy, dok Ping unutar uspostavljenog tunela putuje do WebSocket krajnje točke.
Odgovarajući Pong
Protokol zahtijeva da Pong koji odgovara nosi aplikacijske podatke Pinga. Upotrijebite to podudaranje za prepoznavanje neriješene provjere. Nezatražen Pong je dopušten, ali ne traži potvrdu; slanje nakon svake podatkovne poruke daje drukčiji dokaz.
Preferirajte mehanizam otkucaja srca koji podržava biblioteka. JavaScript u pregledniku treba umjesto togaugovor o otkucaju srca aplikacije. Odaberite intervale i pragove neuspjeha prema radnom opterećenju i mrežnoj politici. Pauze u raspoređivanju ili preopterećena petlja događaja mogu propustiti agresivan prag bez utvrđivanja da je mreža otkazala.
Održavajte prijamnik u radu
Klijentu je potreban stalni I/O za primanje i obradu kontrolnih okvira. Blokiranje tog mehanizma može učiniti da lokalna oskudica resursa izgleda kao prekid.
Ping stvara promet u tunelu, ali svaki posrednik odlučuje što zadovoljava njegovu politiku mirovanja. Nijedan otkucaj srca ne jamči zaštitu od apsolutnog ograničenja trajanja veze.
Partner može odgovoriti na Ping dok njegova aplikacija prestaje proizvoditi ažuriranja, a tiha pretplata može biti zdrava. Pratite posljednji valjani Pong i značajan događaj aplikacije odvojeno kada su oba važna. Pri neuspjehu zadržite rutu, protekla vremena i neriješenu provjeru, zatim zatvorite ili oporavite kroz podržani životni ciklus.