WebSocket Ping nasuprot TCP Keepalive kroz proxy
Odaberite provjeru živosti WebSocket sagovornika umjesto da živ TCP socket smatrate dokazom da aplikacijska putanja odgovara.
Živ TCP socket, WebSocket sagovornik koji odgovara i koristan napredak aplikacije tri su različita zapažanja:
| Dokaz | Šta utvrđuje |
|---|---|
| Živost na TCP nivou | Provjerena transportna putanja odgovara na tom nivou |
| Odgovarajući WebSocket Pong | Sagovornik je odgovorio na taj kontrolni okvir |
| Potvrda aplikacije | Aplikacija je potvrdila operaciju po svom protokolu |
Prednji proxy obično održava odvojene veze prema klijentu i prema odredištu. TCP sagovornik klijenta je proxy, dok Ping unutar uspostavljenog tunela putuje do WebSocket odredišta.
Odgovarajući Pong
Protokol zahtijeva da Pong koji odgovara nosi aplikacijske podatke Pinga. Iskoristite tu podudarnost da prepoznate provjeru na čekanju. Nezatraženi Pong je dopušten, ali ne traži potvrdu; slanje jednog nakon svake podatkovne poruke daje drugačiji dokaz.
Preferirajte bibliotečki podržan mehanizam otkucaja srca. JavaScript u pregledniku umjesto toga treba ugovor o otkucaju srca na nivou aplikacije. Odaberite intervale i pragove neuspjeha prema opterećenju i mrežnoj politici. Pauze u raspoređivanju ili preopterećena petlja događaja mogu propustiti agresivan prag, a da ne dokažu neuspjeh mreže.
Držite prijemnik aktivnim
Klijentu je potreban stalni ulaz-izlaz da prima i obrađuje kontrolne okvire. Blokiranje tog mehanizma može lokalnu nestašicu učiniti sličnom prekidu.
Ping stvara tunelski saobraćaj, ali svaki posrednik sam odlučuje šta zadovoljava njegovu politiku mirovanja. Nijedan otkucaj srca ne garantuje zaštitu od apsolutnog ograničenja trajanja veze.
Sagovornik može odgovarati na Ping i kada njegova aplikacija prestane proizvoditi ažuriranja, a tiha pretplata može biti zdrava. Pratite posljednji valjani Pong i značajan aplikacijski događaj odvojeno kada su oba važna. Pri neuspjehu sačuvajte rutu, protekla vremena i provjeru na čekanju, pa zatvorite ili oporavite kroz podržani životni ciklus.