SSE 全称为 Server-Sent Events(服务器发送事件)。它是一种 Web 标准技术,允许服务器通过一个持久的 HTTP 连接主动向客户端推送实时更新。

主要特点 链接到标题

  • 服务器主动推送:服务器可以随时发送消息,无需客户端主动请求。
  • 自动重连:连接断开后,浏览器会自动重新连接,并可通过 last-event-id 从上次中断处恢复。
  • 实现简单:客户端和服务器端代码都非常简洁。
  • 基于 HTTP:能很好地兼容代理、防火墙和现有网络架构。
  • 事件支持:支持自定义事件名称、数据、ID 和重试指令。
  • 轻量高效:单向数据流时开销比 WebSocket 更低。

使用场景 链接到标题

  • 实时通知和警报
  • 实时仪表盘和监控系统
  • 股票价格、加密货币行情、体育比分
  • 长任务进度跟踪(文件上传、导出、AI 处理等)
  • 新闻 feed 和社交媒体更新
  • 聊天应用(服务器向客户端推送消息部分)

局限性 链接到标题

  1. 单向通信:数据只能从服务器流向客户端。客户端发送数据仍需使用 Fetch、AJAX 或结合 WebSocket。
  2. 仅支持文本:不支持二进制数据(如图片、视频),需使用 Base64 编码,会增加传输大小。
  3. 浏览器连接限制:大多数浏览器对同一域名限制并发 SSE 连接数(通常为 6 个),过多连接可能导致问题。
  4. 不适合高频双向交互:对于实时多人游戏或复杂聊天系统,WebSocket 通常更合适。
  5. 服务器超时:部分服务器和代理有默认连接超时设置,可能需要配置 keep-alive。
  6. 跨域问题:跨域请求需要服务器正确配置 CORS 头信息。