Выбор ответа Middle WebSocket и SSE обновлено
Зачем heartbeat в WebSocket
Вопрос
Зачем в WebSocket-приложениях периодически шлют ping/pong?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Чтобы заметить «мёртвое» соединение и не дать прокси закрыть канал по простою. Если телефон ушёл в метро, TCP может долго не замечать обрыва, и сервер будет держать мёртвые соединения.
Варианты ответа
- Чтобы заметить «мёртвое» соединение и не дать прокси закрыть канал по простоюправильный ответ
- Без ping браузер сам закрывает WebSocket каждые 10 секунд как неактивный
- Ping нужен для повторной авторизации пользователя по куке на каждом интервале
- Ping согласует новый ключ, которым шифруются последующие фреймы канала
Разбор
Если телефон ушёл в метро, TCP может долго не замечать обрыва, и сервер будет держать мёртвые соединения. Heartbeat выявляет это и держит канал активным для прокси и балансировщиков с таймаутом простоя. Браузер сам не закрывает соединение по таймеру. Ping не связан с авторизацией и шифрованием, шифрование даёт TLS в wss://.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.