Skip to content

SSE

Server-Sent Events(SSE)是一种在浏览器和服务器之间建立单向通信通道的技术,允许服务器主动向客户端推送数据(通常基于 HTTP 的流式传输)。下面是 SSE 的优缺点分析:

✅ 优点

1. 实现简单

  • 使用 HTTP 协议,前端只需创建一个 EventSource 实例即可。
  • 服务端只要持续输出 text/event-stream 格式的数据流。
  • 无需额外协议(如 WebSocket 的握手过程)。

2. 自动重连

浏览器在连接断开后会自动重连,不需要手动管理重连逻辑。

3. 带有事件机制

支持自定义事件名(例如:event: custom),便于前端做事件分发处理。

4. 节省资源

  • 对于多数只需“服务器推送”的场景(如通知、实时日志、价格变动等),SSE 比 WebSocket 更轻量。
  • 基于 HTTP 长连接,更易穿越防火墙、代理。

5. 更好支持缓存 & 代理

因为是基于 HTTP 协议的,因此更容易与现有的 HTTP 基础设施(如 Nginx、缓存代理等)协同工作。

❌ 缺点

1. 单向通信

SSE 是服务器到客户端的单向通道,如果客户端要发送数据仍需使用普通 HTTP 请求(例如 Fetch/AJAX)

2. 不支持二进制

  • 只能发送文本(纯文本或 JSON 字符串),不支持二进制数据(不像 WebSocket 支持 Blob/ArrayBuffer)。

3. 浏览器支持有限

  • IE 不支持(Edge 12+ 支持),但现代浏览器普遍兼容。
  • 移动端浏览器中部分实现不稳定

4. 连接数限制

  • 一些浏览器(如 Chrome)对同一源的 HTTP 长连接数有限(通常最多 6 个),可能影响大规模使用。

5. 跨域复杂

虽然支持 CORS,但使用时要特别注意设置响应头(如 Access-Control-Allow-Origin),并且不能携带 Cookie(除非设置了 withCredentials 并正确配置服务端)。