Сърдечните сигнали на WebSocket в браузъра изискват приложен протокол
Проектирайте договорен приложен сърдечен сигнал, когато JavaScript в браузъра не може да изпраща директно кадри WebSocket Ping.
WebSocket API в браузъра има send(). Той не предоставя общ метод ping(), с който JavaScript да изпраща кадри на протокола Ping.
Ако приложението ви изпраща текстово съобщение като {"type":"heartbeat"}, това са приложни данни. Сървърът трябва да разбира съобщението и да определи отговор. Сървър, който не прилага този договор, не е длъжен да отговаря с протоколен Pong само защото текстът съдържа думата ping.
Определете какво означава потвърждението, как идентифицира чакащия сърдечен сигнал и кога старо потвърждение е прекалено закъсняло. Дръжте това отделно от потвърждението на бизнес операция.
Таймерът в JavaScript също има ограничения за планиране. Фоновите раздели и заетите главни нишки могат да забавят обратните извиквания. Не тълкувайте пропусната точна граница на таймера като категорично доказателство, че проксито е спряло да препраща.
Браузърът може да обработва контролните кадри на протокола вътрешно, но това не дава на приложния код преносим изглед на всеки Ping или Pong. Ако страницата се нуждае от собствено решение за жизненост, използвайте явен приложен договор и политика за възстановяване.
Сокет, чийто readyState е OPEN, се счита за отворен локално; това не е независимо измерване, че отдалеченото приложение е обработило последното ви съобщение. Използвайте доказателствата, които отговарят на въпроса, на който наистина трябва да отговорите.