请求-响应 模式 vs 服务器推送 模式 — 动态演示
客户端主动发起请求,服务器处理后返回响应,然后连接关闭。每次数据更新都需要重新建立连接。
建立一次连接后,服务器持续主动推送数据。无需轮询,延迟低,适合实时数据流、聊天、进度更新等场景。
| 维度 | HTTP / REST | SSE (Server-Sent Events) |
|---|---|---|
| 通信方向 | 半双工 · 客户端发起请求 | 单向 · 服务端→客户端推送 |
| 连接模式 | 请求-响应后断开 | 一次连接,长连接保持 |
| 数据更新 | 轮询 (Polling) 定期拉取 | 服务端按需主动推送 |
| 实时性 | 差 · 取决于轮询间隔 | 好 · 数据到达即推送 |
| 资源消耗 | 高 · 频繁建连/断连 | 低 · 单连接持续复用 |
| 协议层 | HTTP/1.0, /1.1, /2, /3 | 基于 HTTP/1.1 长连接 |
| 浏览器兼容 | ✅ 所有浏览器 | ✅ IE/Edge 需要 polyfill |
| 双向通信 | 需要 WebSocket | 单向;双向需 + fetch |
| 典型场景 | CRUD API、数据查询 | 实时通知、股价推送、进度条 |
| 自动重连 | 每次手动处理 | ✅ 浏览器内置自动重连 |
↓ HTTP 需要多次建连,SSE 只需一次连接持续推送 ↓