Nettleserens WebSocket-API har send(). Den tilbyr ikke en generell ping()-metode som JavaScript kan bruke til å sende protokollens Ping-rammer.

Hvis applikasjonen din sender en tekstmelding som {"type":"heartbeat"}, er det applikasjonsdata. Serveren må forstå meldingen og definere et svar. En server som ikke implementerer denne kontrakten, er ikke forpliktet til å svare med en protokoll-Pong bare fordi teksten inneholder ordet ping.

Definer hva en bekreftelse betyr, hvordan den identifiserer hjerteslaget som venter, og når en gammel bekreftelse er for sen. Hold dette atskilt fra bekreftelse 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 på 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 den siste meldingen din. Bruk bevisene som passer til spørsmålet du faktisk må svare på.

Relaterte artikler