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

Реконнект в EventSource

Вопрос

Соединение EventSource оборвалось. Что сделает браузер?

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

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

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

Коротко

Правильный ответ: Сам переподключится через паузу и пришлёт Last-Event-ID с id последнего события. Автореконнект встроен в EventSource: задержку можно задать полем retry: в потоке.

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

  1. Сам переподключится через паузу и пришлёт Last-Event-ID с id последнего событияправильный ответ
  2. Ничего: переподключение нужно писать вручную, как у WebSocket, через обработчик close
  3. Выбросит необработанное исключение в консоль и закроет объект без события error
  4. Переподключится, а все пропущенные события сервер обязан дослать автоматически

Разбор

Автореконнект встроен в EventSource: задержку можно задать полем retry: в потоке. Если события имели id:, браузер пришлёт Last-Event-ID. А вот досылка пропущенного это работа вашего сервера: браузер только передаёт id, сам он ничего не восстановит. У WebSocket встроенного реконнекта нет, а у EventSource есть. Исключения и закрытия вкладки нет, срабатывает событие error.

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

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