SSE与WebSocket
SSE与WebSocket
1. WebSocket
WebSocket 是 HTML5 引入的 全双工通信协议,允许客户端和服务器之间保持持久连接,实现低延迟的双向通信
WebSocket特点:
- 全双工通信:客户端和服务器都可以主动发送数据
- 低延迟::连接建立后,数据交换无需额外的 HTTP 头部,提高通信效率
- 支持二进制数据:可以发送文本(JSON)和二进制数据(Blob、ArrayBuffer)
- 需要握手:使用 HTTP 进行
Upgrade: websocket协商,建立 WebSocket 连接
适用场景:
- 在线聊天应用IM
- 实时游戏
- 直播弹幕
2. SSE(Server-Sent Events)
SSE 是基于 HTTP 的 服务器推送技术,允许服务器主动向客户端发送数据,但客户端无法主动向服务器发送消息
SSE特点:
- 单向通信:仅服务器可以推送数据,客户端不能主动发送
- 基于 HTTP/1.1 长连接:使用
EventSource监听服务器的推送数据 - 仅支持文本传输:只能传输 UTF-8 编码的文本,不支持二进制数据
- 自动重连:浏览器的
EventSource组件自带断线重连功能
适用场景:
- 新闻或社交媒体的实时更新
- 服务器通知推送
- 服务器日志监控
- 大模型流式输出
3. WebSocket与SSE对比
| 特性 | WebSocket | SSE(Server-Sent Events) |
|---|---|---|
| 通信模式 | 双向通信 | 单向(服务器 → 客户端) |
| 协议 | 独立协议(ws/wss) | HTTP(基于 HTTP/1.1 长连接) |
| 数据格式 | 文本 & 二进制 | 仅支持文本(UTF-8) |
| 连接方式 | 需升级 HTTP 连接 | 直接使用 HTTP 长连接 |
| 自动重连 | 需要手动实现 | EventSource 自带重连 |
| 浏览器支持 | 现代浏览器都支持 | 现代浏览器都支持(IE 不支持) |
| 适用场景 | 聊天、游戏、实时数据同步 | 服务器通知、新闻推送、状态更新 |
SSE与WebSocket
http://example.com/2026/03/25/SSE与WebSocket/