API-ul WebSocket al browserului are send(). Acesta nu expune o metodă ping() generală pentru ca JavaScript să trimită cadre Ping ale protocolului.

Dacă aplicația dvs. trimite un mesaj text precum {"type":"heartbeat"}, acelea sunt date de aplicație. Serverul trebuie să înțeleagă mesajul și să definească un răspuns. Un server care nu implementează acel contract nu este obligat să răspundă cu un Pong de protocol doar pentru că textul conține cuvântul ping.

Definiți ce înseamnă o confirmare, cum identifică bătaia inimii în așteptare și când o confirmare veche este prea târzie. Țineți-o separată de confirmarea unei operațiuni de afaceri.

Un temporizator JavaScript are și el constrângeri de planificare. Filele din fundal și firele principale ocupate pot întârzia apelurile inverse. Nu interpretați o limită exactă de temporizator ratată drept dovadă decisivă că proxy-ul a încetat să mai transmită.

Browserul poate trata intern cadrele de control ale protocolului, dar asta nu oferă codului aplicației o imagine portabilă a fiecărui Ping sau Pong. Dacă pagina are nevoie de propria decizie de viabilitate, folosiți un contract de aplicație explicit și o politică de recuperare.

Un socket al cărui readyState este OPEN este considerat deschis local; nu este o măsurătoare independentă că aplicația îndepărtată a procesat ultimul dvs. mesaj. Folosiți dovezile care corespund întrebării la care trebuie să răspundeți cu adevărat.

Articole similare