Skip to content

Что такое SSE

Коротко:

SSE (Server-Sent Events, EventSource API) — стандарт потоковой передачи данных от сервера к клиенту через обычный HTTP. Client открывает GET к endpoint с Accept: text/event-stream, сервер держит connection открытым и шлёт сообщения по мере готовности. В отличие от WebSocket: unidirectional (только server→client), работает через любой HTTP proxy, нативный auto-reconnect, не нужен Upgrade handshake.

Ниже: подробности, пример, смежные термины, FAQ.

Подробности

  • Content-Type: text/event-stream
  • Формат: data: {json}\n\n
  • event: custom event name, id: для resume после disconnect
  • Reconnection: automatic с Last-Event-ID header
  • Limit 6 connections per-domain в Chrome (HTTP/1.1). HTTP/2 убирает limit

Пример

const es = new EventSource('/stream');
es.onmessage = e => console.log(JSON.parse(e.data));
es.addEventListener('user-login', e => {...});

Смежные термины

Больше по теме

Часто задаваемые вопросы

Когда использовать SSE вместо WebSocket?

Server-only push (notifications, live feed). Проще кода, работает через proxy. Для chat/games нужен WebSocket.

Reconnect — автоматический?

Да. Browser сам переподключается с exponential backoff + отправляет <code>Last-Event-ID</code>.

HTTP/1.1 limit 6 connections — проблема?

Для dashboard с 10+ SSE feeds — да. Используйте один multiplex endpoint или мигрируйте на HTTP/2/3.