Srčni utripi WebSocket v brskalniku zahtevajo aplikacijski protokol
Oblikujte dogovorjeni aplikacijski srčni utrip, ko JavaScript v brskalniku ne more neposredno pošiljati okvirov WebSocket Ping.
WebSocket API brskalnika ima send(). Ne ponuja splošne metode ping(), s katero bi JavaScript lahko pošiljal okvire Ping protokola.
Če vaša aplikacija pošlje besedilno sporočilo, kot je {"type":"heartbeat"}, so to aplikacijski podatki. Strežnik mora sporočilo razumeti in določiti odgovor. Strežnik, ki te pogodbe ne izvaja, ni dolžan odgovoriti s protokolskim Pongom samo zato, ker besedilo vsebuje besedo ping.
Določite, kaj pomeni potrditev, kako prepozna čakajoči srčni utrip in kdaj je stara potrditev prepozna. To hranite ločeno od potrditve poslovne operacije.
Tudi časovnik JavaScript ima omejitve razporejanja. Zavihki v ozadju in zasedene glavne niti lahko zakasnijo povratne klice. Zamujene natančne meje časovnika ne razlagajte kot odločilen dokaz, da je posrednik prenehal posredovati.
Brskalnik lahko nadzorne okvire protokola obdeluje interno, vendar to aplikacijski kodi ne daje prenosljivega pogleda na vsak Ping ali Pong. Če stran potrebuje lastno odločitev o živosti, uporabite izrecno aplikacijsko pogodbo in politiko obnovitve.
Vtičnica, katere readyState je OPEN, se lokalno šteje za odprto; to ni neodvisna meritev, da je oddaljena aplikacija obdelala vaše zadnje sporočilo. Uporabite dokaze, ki ustrezajo vprašanju, na katero morate v resnici odgovoriti.