Клиент открывает соединение через EventSource. Сервер отвечает с Content-Type: text/event-stream и держит соединение открытым, отправляя события в формате:
data: {"price": 42.5, "symbol": "BTC"}\n\n
const es = new EventSource('/api/prices');
es.onmessage = (e) => {
const data = JSON.parse(e.data);
updatePrice(data.symbol, data.price);
};
es.onerror = () => es.close();
SSE идеален для live-дашбордов, стриминга уведомлений, цен, прогресса задач.