SSE 全称为 Server-Sent Events(服务器发送事件)。它是一种 Web 标准技术,允许服务器通过一个持久的 HTTP 连接主动向客户端推送实时更新。
主要特点 链接到标题
- 服务器主动推送:服务器可以随时发送消息,无需客户端主动请求。
- 自动重连:连接断开后,浏览器会自动重新连接,并可通过
last-event-id从上次中断处恢复。 - 实现简单:客户端和服务器端代码都非常简洁。
- 基于 HTTP:能很好地兼容代理、防火墙和现有网络架构。
- 事件支持:支持自定义事件名称、数据、ID 和重试指令。
- 轻量高效:单向数据流时开销比 WebSocket 更低。
使用场景 链接到标题
- 实时通知和警报
- 实时仪表盘和监控系统
- 股票价格、加密货币行情、体育比分
- 长任务进度跟踪(文件上传、导出、AI 处理等)
- 新闻 feed 和社交媒体更新
- 聊天应用(服务器向客户端推送消息部分)
局限性 链接到标题
- 单向通信:数据只能从服务器流向客户端。客户端发送数据仍需使用 Fetch、AJAX 或结合 WebSocket。
- 仅支持文本:不支持二进制数据(如图片、视频),需使用 Base64 编码,会增加传输大小。
- 浏览器连接限制:大多数浏览器对同一域名限制并发 SSE 连接数(通常为 6 个),过多连接可能导致问题。
- 不适合高频双向交互:对于实时多人游戏或复杂聊天系统,WebSocket 通常更合适。
- 服务器超时:部分服务器和代理有默认连接超时设置,可能需要配置 keep-alive。
- 跨域问题:跨域请求需要服务器正确配置 CORS 头信息。