WebSocket-sydämenlyönnit selaimessa vaativat sovellusprotokollan
Suunnittele sovittu sovelluksen sydämenlyönti, kun selaimen JavaScript ei voi lähettää WebSocket Ping -kehyksiä suoraan.
Selaimen WebSocket-rajapinnassa on send(). Se ei tarjoa yleistä ping()-menetelmää, jolla JavaScript voisi lähettää protokollan Ping-kehyksiä.
Jos sovelluksesi lähettää tekstiviestin kuten {"type":"heartbeat"}, se on sovellusdataa. Palvelimen on ymmärrettävä viesti ja määriteltävä vastaus. Palvelin, joka ei toteuta tätä sopimusta, ei ole velvollinen vastaamaan protokollan Pongilla vain siksi, että tekstissä on sana ping.
Määrittele, mitä kuittaus tarkoittaa, miten se tunnistaa odottavan sydämenlyönnin ja milloin vanha kuittaus on liian myöhässä. Pidä se erillään liiketoimen kuittauksesta.
Myös JavaScript-ajastimella on ajoitusrajoituksia. Taustavälilehdet ja kiireiset pääsäikeet voivat viivästyttää takaisinkutsuja. Älä tulkitse ohitettua tarkkaa ajastinrajaa ratkaisevaksi todisteeksi siitä, että välityspalvelin lopetti välittämisen.
Selain voi käsitellä protokollan ohjauskehyksiä sisäisesti, mutta se ei anna sovelluskoodille siirrettävää näkymää jokaiseen Ping- tai Pong-kehykseen. Jos sivu tarvitsee oman elossaolopäätöksensä, käytä nimenomaista sovellussopimusta ja palautumiskäytäntöä.
Pistoke, jonka readyState on OPEN, katsotaan paikallisesti avoimeksi; se ei ole riippumaton mittaus siitä, että etäsovellus käsitteli viimeisen viestisi. Käytä todisteita, jotka vastaavat kysymystä, johon sinun todella on vastattava.