WebSocket vs HTTP 对比
文章目录
-
- [WebSocket vs HTTP 对比](#WebSocket vs HTTP 对比)
- 1.模式对比
- [2. 详细特性对比表](#2. 详细特性对比表)
- [3. 选择指南](#3. 选择指南)
-
- [3.1 使用 HTTP 当:](#3.1 使用 HTTP 当:)
- [3.2 使用 WebSocket 当:](#3.2 使用 WebSocket 当:)
- 4.现代应用中的结合使用
1.模式对比
头部开销对比 连接生命周期 通信模式对比 HTTP头部 WebSocket头部 每次请求完整头部 包含Cookie,User-Agent等 开销: 几百字节-几KB 握手后头部极小 仅2-14字节帧头 开销: 2-14字节 HTTP连接 WebSocket连接 建立TCP连接 发送HTTP请求 接收HTTP响应 关闭连接 短连接
非持久 建立TCP连接 HTTP握手升级 WebSocket连接 双向数据传输 长连接
持久化 HTTP协议 WebSocket协议 请求-响应模式 客户端主动发起 服务器被动响应 每次请求独立 全双工双向通信 客户端可主动发送 服务器可主动推送 持久连接
适用场景 HTTP适用场景 WebSocket适用场景 网页浏览 REST API 文件下载 传统Web应用 实时聊天 在线游戏 股票行情 协同编辑
2. 详细特性对比表
特性 | HTTP | WebSocket |
---|---|---|
通信模式 | 半双工,请求-响应 | 全双工,双向通信 |
连接类型 | 短连接(默认) | 长连接,持久化 |
数据流向 | 只能客户端发起请求 | 服务器和客户端都可主动发送 |
头部开销 | 每次请求都有完整HTTP头部(几百字节) | 连接建立后只有2-14字节帧头 |
协议升级 | 不需要 | 需要HTTP握手升级(101 Switching Protocols) |
实时性 | 低,需要轮询 | 高,消息即时到达 |
服务器推送 | 不支持(需用SSE、长轮询等变通方案) | 原生支持服务器主动推送 |
连接建立 | 每个请求都可能新建TCP连接 | 一次握手,长期使用同一TCP连接 |
适用场景 | 网页浏览、API调用、文件传输 | 实时聊天、在线游戏、金融行情、协同编辑 |
3. 选择指南
3.1 使用 HTTP 当:
- ✅ 需要请求-响应模式的传统Web应用
- ✅ 一次性数据获取(如表单提交、API调用)
- ✅ 兼容性要求极高的场景
- ✅ 简单的静态内容服务
3.2 使用 WebSocket 当:
- ✅ 需要实时双向通信
- ✅ 服务器需要主动推送数据
- ✅ 低延迟要求高的应用(游戏、交易)
- ✅ 频繁的小数据量通信
4.现代应用中的结合使用
在实际项目中,通常两者结合使用:
- HTTP:用于用户认证、页面加载、API调用
- WebSocket:用于实时通知、聊天、实时数据更新