Skip to content

SSE

SSE是什么

SSE(Server-Sent Events) 是 HTML5 提供的一种标准 API,允许服务器通过 HTTP 协议向客户端持续推送数据,适用于需要单向实时通信的场景。

适用于:通知、消息订阅、实时数据更新等。

核心特点

  • 单向通行:服务器 → 客户端(客户端不能向服务器发送数据)。
  • 基于HTTP:使用标准HTTP/1.1或HTTP/2协议,兼容性强。
  • 数据格式:默认传输 UTF-8 文本数据,二进制需编码(可编码 JSON)。
  • 自动重连:内置连接恢复机制。
  • 简单易用:浏览器原生支持,无需额外库。

SSE的原理

  1. 客户端建立连接通过 EventSource 构造函数连接到服务器上某一个事件流接口。
  2. 服务器保持连接开放,持续返回事件流 Content-Type: text/event-stream(响应头设置)
  3. 消息数据格式为 data: 消息\n\n
  4. 浏览器监听事件并做出响应。

SSE的优缺点

优点缺点
协议简单: 基于HTTP,无需其他协议单向通信: 客户端无法通过SSE向服务器发送数据
断线重连: 内置断线重连机制(默认3秒间隔)仅支持文本:二进制数据需编码传输
低延迟: 减少轮询开销,实时性高兼容性限制: 不支持IE及旧版浏览器
支持事件类型: 可自定义事件连接限制: 浏览器最多支持6个并发连接

SSE vs WebSocket 对比

特性SSEWebSocket
通信方向单向(服务器 -> 客户端)双向全双工
协议HTTP(长连接)独立协议(ws:///wss://)
数据格式仅文本文本/二进制
断线重连默认支持需要自己实现
兼容性主流浏览器(IE除外)广泛支持