De WebSocket-API van de browser heeft send(). Hij biedt geen algemene ping()-methode waarmee JavaScript pingframes van het protocol kan versturen.

Als je applicatie een tekstbericht zoals {"type":"heartbeat"} stuurt, zijn dat applicatiegegevens. De server moet het bericht begrijpen en een antwoord definiëren. Een server die dat contract niet implementeert, is niet verplicht met een protocol-Pong te antwoorden alleen omdat de tekst het woord ping bevat.

Bepaal wat een bevestiging betekent, hoe die de openstaande heartbeat identificeert en wanneer een oude bevestiging te laat is. Houd dit gescheiden van de bevestiging van een bedrijfsoperatie.

Een JavaScript-timer heeft ook planningsbeperkingen. Achtergrondtabbladen en drukke hoofdthreads kunnen callbacks vertragen. Interpreteer een gemiste exacte timergrens niet als sluitend bewijs dat de proxy is gestopt met doorsturen.

De browser kan besturingsframes van het protocol intern afhandelen, maar dat geeft applicatiecode geen draagbaar beeld van elke Ping of Pong. Als de pagina een eigen levensvatbaarheidsbeslissing nodig heeft, gebruik dan een expliciet applicatiecontract en een herstelbeleid.

Een socket waarvan de readyState OPEN is, geldt lokaal als open; dat is geen onafhankelijke meting dat de externe applicatie je laatste bericht heeft verwerkt. Gebruik het bewijs dat past bij de vraag die je echt moet beantwoorden.

Gerelateerde artikelen