Выбор ответа Middle WebSocket и SSE обновлено
Что выбрать для уведомлений
Вопрос
Нужно показывать пользователю уведомления о новых заказах в реальном времени. Клиент ничего не шлёт в ответ, кроме обычных действий через REST. Что разумнее всего выбрать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: SSE: поток в одну сторону, встроенный реконнект, обычный HTTP и куки. Задача однонаправленная, а SSE даёт ровно это с меньшей сложностью: не нужен свой протокол реконнекта, прокси понимают обычный HTTP.
Варианты ответа
- WebSocket: это единственный способ получать данные от сервера без запроса клиента
- Short polling каждые 100 мс: так задержка уведомлений будет почти незаметной
- SSE: поток в одну сторону, встроенный реконнект, обычный HTTP и кукиправильный ответ
- WebRTC DataChannel: прямой канал с минимальной задержкой и без нагрузки на сервер
Разбор
Задача однонаправленная, а SSE даёт ровно это с меньшей сложностью: не нужен свой протокол реконнекта, прокси понимают обычный HTTP. WebSocket тоже сработает, но он не единственный способ: SSE и long polling тоже доставляют события. Polling раз в 100 мс завалит сервер запросами. WebRTC предназначен для p2p и требует сигнального сервера, это избыточно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.