Выбор ответа Middle WebSocket и SSE обновлено

Зачем heartbeat в WebSocket

Вопрос

Зачем в WebSocket-приложениях периодически шлют ping/pong?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Чтобы заметить «мёртвое» соединение и не дать прокси закрыть канал по простою. Если телефон ушёл в метро, TCP может долго не замечать обрыва, и сервер будет держать мёртвые соединения.

Варианты ответа

  1. Чтобы заметить «мёртвое» соединение и не дать прокси закрыть канал по простоюправильный ответ
  2. Без ping браузер сам закрывает WebSocket каждые 10 секунд как неактивный
  3. Ping нужен для повторной авторизации пользователя по куке на каждом интервале
  4. Ping согласует новый ключ, которым шифруются последующие фреймы канала

Разбор

Если телефон ушёл в метро, TCP может долго не замечать обрыва, и сервер будет держать мёртвые соединения. Heartbeat выявляет это и держит канал активным для прокси и балансировщиков с таймаутом простоя. Браузер сам не закрывает соединение по таймеру. Ping не связан с авторизацией и шифрованием, шифрование даёт TLS в wss://.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.