WebSocket otkucaji u pregledniku zahtijevaju aplikacijski protokol
Osmislite dogovoreni aplikacijski otkucaj kada JavaScript u pregledniku ne može izravno slati WebSocket Ping okvire.
WebSocket API preglednika ima send(). Ne izlaže opću metodu ping() kojom bi JavaScript mogao slati Ping okvire protokola.
Ako vaša aplikacija pošalje tekstualnu poruku poput {"type":"heartbeat"}, to su aplikacijski podaci. Poslužitelj mora razumjeti poruku i definirati odgovor. Poslužitelj koji ne provodi taj ugovor nije dužan odgovoriti protokolskim Pong-om samo zato što tekst sadrži riječ ping.
Definirajte što potvrda znači, kako prepoznaje otkucaj koji čeka i kada je stara potvrda prekasna. Držite to odvojeno od potvrde poslovne operacije.
JavaScriptov mjerač vremena također ima ograničenja zakazivanja. Pozadinske kartice i zauzete glavne niti mogu odgoditi povratne pozive. Ne tumačite propuštenu točnu granicu mjerača kao konačan dokaz da je proxy prestao prosljeđivati.
Preglednik može interno obrađivati kontrolne okvire protokola, ali to aplikacijskom kodu ne daje prenosiv pregled svakog Ping ili Pong okvira. Ako stranici treba vlastita odluka o živosti, upotrijebite izričit aplikacijski ugovor i politiku oporavka.
Utikač čiji je readyState OPEN lokalno se smatra otvorenim; to nije neovisno mjerenje da je udaljena aplikacija obradila vašu posljednju poruku. Upotrijebite dokaze koji odgovaraju pitanju na koje doista trebate odgovoriti.