WebSocket-hjerteslag i nettleseren krever en applikasjonsprotokoll
Utform et avtalt applikasjonshjerteslag når nettleserens JavaScript ikke kan sende WebSocket Ping-rammer direkte.
Nettleserens WebSocket-API har send(). Det gir ingen generell ping()-metode som JavaScript kan bruke for å sende protokollens Ping-rammer.
Dersom applikasjonen din sender en tekstmelding som {"type":"heartbeat"}, er det applikasjonsdata. Tjeneren må forstå meldingen og definere et svar. En tjener som ikke implementerer denne kontrakten, plikter ikke å svare med en protokoll-Pong bare fordi teksten inneholder ordet ping.
Definer hva en kvittering betyr, hvordan den identifiserer hjerteslaget som venter, og når en gammel kvittering er for sen. Hold dette atskilt fra kvittering av en forretningsoperasjon.
En JavaScript-timer har også planleggingsbegrensninger. Bakgrunnsfaner og travle hovedtråder kan forsinke tilbakekall. Ikke tolk en mistet nøyaktig timergrense som avgjørende bevis for at proxyen sluttet å videresende.
Nettleseren kan håndtere protokollens kontrollrammer internt, men det gir ikke applikasjonskoden et flyttbart bilde av hver Ping eller Pong. Hvis siden trenger sin egen levedyktighetsbeslutning, bruk en uttrykkelig applikasjonskontrakt og en gjenopprettingspolicy.
En socket der readyState er OPEN regnes lokalt som åpen; det er ikke en uavhengig måling av at fjernapplikasjonen har behandlet din siste melding. Bruk bevisene som passer til spørsmålet du faktisk må besvare.