SSE 流(Server-Sent Events)是服务器通过一条保持打开的 HTTP 连接,持续向浏览器单向推送数据的方式。常用于 AI 打字式回答、实时日志、进度通知等。

它的数据格式通常是:

data: 你好
data: 世界

每条消息以两个换行结尾。浏览器收到后立即处理,不必不断轮询接口。

// 前端:接收 SSE
const es = new EventSource("/api/stream");

es.onmessage = (event) => {
  console.log(event.data);
};
// Node.js / Express:发送 SSE
app.get("/api/stream", (req, res) => {
  res.setHeader("Content-Type", "text/event-stream");
  res.setHeader("Cache-Control", "no-cache");

  res.write("data: 第一段内容\n\n");

  setTimeout(() => {
    res.write("data: 第二段内容\n\n");
    res.end();
  }, 1000);
});

SSE 只能服务端 → 客户端;若需双向实时通信(如多人协作、实时游戏),通常使用 WebSocket。