WebSocketi südamelöögid brauseris vajavad rakenduse protokolli
Kujundage kokkulepitud rakenduse südamelöök, kui brauseri JavaScript ei saa WebSocketi Pingi kaadreid otse saata.
Brauseri WebSocketi API-l on send(). See ei paku üldist meetodit ping(), millega JavaScript saaks saata protokolli Pingi kaadreid.
Kui teie rakendus saadab tekstisõnumi nagu {"type":"heartbeat"}, on see rakenduse andmed. Server peab sõnumist aru saama ja vastuse määratlema. Server, mis seda lepet ei rakenda, ei ole kohustatud vastama protokolli Pongiga ainult seetõttu, et tekstis on sõna ping.
Määratlege, mida kinnitus tähendab, kuidas see tuvastab ootel südamelöögi ja millal on vana kinnitus liiga hilja. Hoidke see äritoimingu kinnitusest eraldi.
Ka JavaScripti taimeril on ajastuspiirangud. Taustapaneelid ja hõivatud põhilõimed võivad tagasikutseid edasi lükata. Ärge tõlgendage vahelejäänud täpset taimeri piiri lõpliku tõendina, et puhverserver lõpetas edastamise.
Brauser suudab protokolli juhtkaadreid sisemiselt käsitleda, kuid see ei anna rakenduse koodile kaasaskantavat ülevaadet igast Pingist või Pongist. Kui leht vajab oma elujõulisuse otsust, kasutage selgesõnalist rakenduse lepet ja taastamispoliitikat.
Pistik, mille readyState on OPEN, loetakse lokaalselt avatuks; see ei ole sõltumatu mõõtmine, et kaugrakendus töötles teie viimast sõnumit. Kasutage tõendeid, mis vastavad küsimusele, millele tegelikult vastata tuleb.