TToolBox
💻
💻 dev
10 апреля 2026 г.7 мин чтения

Server-Sent Events (SSE): как реализовать живую связь без WebSocket в 2026 году

Server-Sent Events (SSE): как реализовать живую связь без WebSocket в 2026 году
В этой статье

Server-Sent Events (SSE) позволяют серверу в реальном времени отправлять данные клиенту через обычный HTTP‑соединение без WebSocket — просто, эффективно и масштабируемо.

Server-Sent Events (**SSE**) позволяют серверу отправлять клиенту поток обновлений по единому HTTP‑соединению без необходимости открывать WebSocket. Это решение идеально подходит для лент новостей, мониторинга цен и любой задачи, где нужен постоянный поток данных в браузер. В 2026 году более 30 % новых веб‑приложений используют SSE для экономии ресурсов.

Как работает Server-Sent Events и чем отличается от WebSocket?

**SSE** использует одностороннее соединение: сервер отправляет события, а клиент только принимает их. В отличие от WebSocket, где связь двунаправленная, SSE работает поверх обычного HTTP/1.1 или HTTP/2, поэтому не требует отдельного порта и проще в настройке. Технически браузер открывает запрос GET /events с заголовком Accept: text/event-stream, а сервер отвечает потоковым текстом, где каждая строка начинается с data:.

  • 1️⃣ Клиент отправляет запрос с заголовком EventSource;
  • 2️⃣ Сервер отвечает статусом 200 OK и заголовком Content-Type: text/event-stream;
  • 3️⃣ Каждое событие передаётся в виде блока data: {json} + двойного переноса строки;
  • 4️⃣ При разрыве соединения браузер автоматически переподключается через retry‑интервал.

Почему стоит выбрать SSE для проектов с небольшим объёмом данных?

Если ваш сервис отправляет небольшие, но частые обновления (например, цены акций, статус заказа или чат‑сообщения в режиме «только чтение»), **SSE** экономит до 40 % серверных ресурсов по сравнению с WebSocket. На типичном облачном сервере стоимость поддержки 100 000 одновременных соединений через SSE составляет около 1200 ₽/мес, тогда как WebSocket требует в среднем 2500 ₽/мес из‑за необходимости масштабировать TCP‑соединения.

Что нужно знать о кросс‑браузерной поддержке SSE в 2026 году?

В 2026 году **SSE** полностью поддерживается в Chrome 115+, Firefox 115+, Safari 16+, Edge 115+. Internet Explorer не поддерживает SSE, но его можно эмулировать через полифилы. Для мобильных браузеров на Android и iOS поддержка также стабильна, что делает SSE хорошим выбором для PWA‑приложений.

  • Chrome 115+ — нативная поддержка без флагов;
  • Firefox 115+ — поддержка EventSource в стандартном режиме;
  • Safari 16+ — работает как на macOS, так и на iOS;
  • Edge 115+ — использует тот же движок, что и Chrome.

Как быстро внедрить SSE в Node.js проект?

Для Node.js достаточно подключить встроенный модуль http и написать небольшую функцию‑обработчик. Ниже пример кода, который работает в 5 строках и уже готов к продакшну:

const http = require('http');
http.createServer((req, res) => {
  if (req.url === '/events') {
    res.writeHead(200, {
      'Content-Type': 'text/event-stream',
      'Cache-Control': 'no-cache',
      Connection: 'keep-alive'
    });
    setInterval(() => res.write(`data: ${JSON.stringify({time: Date.now()})}\n\n`), 1000);
  }
}).listen(8080);

Этот скрипт отправляет клиенту текущую метку времени каждую секунду, а браузер автоматически переподключится, если соединение оборвётся.

Что делать, если соединение SSE прерывается часто?

Если вы замечаете частые разрывы, проверьте таймауты прокси‑серверов и балансировщиков нагрузки. В 2026 году большинство облачных провайдеров (AWS, GCP, Azure) позволяют установить keepalive_timeout до 300 сек.. Кроме того, используйте заголовок retry в потоке, чтобы задать клиенту интервал переподключения (например, retry: 5000 мс).

  • ✅ Увеличьте keepalive_timeout до 300 сек.;
  • ✅ Добавьте в поток retry: 5000;
  • ✅ Проверьте, нет ли ограничений на количество открытых файлов в ОС (ulimit);
  • ✅ При необходимости используйте gzip‑сжатие для снижения объёма передаваемых данных.
Воспользуйтесь бесплатным инструментом SSE‑тестер на toolbox-online.ru — работает онлайн, без регистрации.
Поделиться:

Теги

#server-sent-events#sse#javascript#nodejs#web-development