Server-Sent Events (SSE)
Бывало у вас так: на проекте есть задача в реальном времени, но техлид или инфраструктура или ИБ накладывают табу на WebSocket?
Со мной такое случилось!
Есть задача сделать sorry, NDA, а использовать вебсокеты — нельзя. Долго думал, как обойтись, и решение нашлось в виде SSE (Server-Sent Events).
Делюсь забытой технологией древних.
Что это такое?
SSE — это стандарт, позволяющий серверу автоматически «проталкивать» (push) данные клиенту (например, браузеру) через одно постоянное HTTP-соединение. Клиент просто подписывается на событие и ждет обновлений.
Как выглядит на практике?
Сервер отправляет данные в специальном текстовом формате, а клиент (JavaScript) ловит их через объект EventSource. Это очень просто реализовать.
❓SSE vs WebSocket: В чем разница?
Частая ошибка — ставить их в один ряд. Они решают разные задачи!
Server-Sent Events (SSE) — это как радио. Сервер «вещает» данные, а клиент их «ловит».
▫️Связь односторонняя (только Server → Client)
▫️Работает поверх обычного HTTP(S
▫️Супер-фича: если соединение падает, клиент автоматически переподключается
▫️Отправляет только текстовые данные (чаще всего JSON).
WebSocket — это как телефонный звонок. Устанавливается полноценное двустороннее соединение (Server ⇄ Client).
▫️Свой специальный протокол
▫️Можно пересылать что угодно: текст, бинарные данные, файлы
▫️За эту мощь и функциональность приходится платить: переподключение и обработку ошибок нужно писать вручную
▫️Реализация сложнее
😎Когда использовать SSE?
SSE идеален для сценариев, где данные идут в основном в одну сторону — от сервера к клиенту.
Примеры:
〰️Лента уведомлений (новое сообщение, комментарий, лайк)
〰️Онлайн-датчики и мониторинг (курс акций, температура процессора)
〰️Ленты новостей / Таймлайны в реальном времени
〰️Статус длительной задачи (прогресс загрузки файла)
〰️Dashboard-ы, которые должны обновляться сами
😃Когда выбрать WebSocket?
WebSocket — ваш выбор, когда нужна полноценная двусторонняя связь в реальном времени.
Примеры:
〰️Чаты и мессенджеры (нужно не только получать, но и отправлять сообщения мгновенно)
〰️Онлайн-игры
〰️Совместное редактирование документов
〰️Сервисы видеозвонков
Итого
Не тянем за собой тяжелый WebSocket, если задача решается легким SSE.
Правильный выбор технологии:
▫️Экономит ресурсы на разработку и поддержку.
▫️Повышает надежность (SSE проще и отказоустойчивее за счет HTTP).
▫️Делает архитектуру подходящей под задачу.
Байт на комментарии: В каком из проектов вашей компании можно применить SSE прямо сейчас?
Post #828
628

- 🔥 9
- ❤🔥 1
- 👍 1