WebSocket 和 Http 的核心区别

WebSocket 和 Http 的核心区别

一、WebSocket 和 HTTP 的核心区别

1. 连接方式不同

HTTP:短连接 / 半双工

  • HTTP 是 请求--响应模式

  • 必须由客户端发起请求,服务端才能返回数据

  • 一次请求结束后,连接通常关闭(除非使用 keep-alive)

📌 因此,HTTP 不能主动推送消息

(除非用轮询、长轮询、SSE 等 hack 手段)


WebSocket:长连接 / 全双工

  • 一旦建立连接(通过 HTTP 升级 handshake)

  • 客户端和服务端可以互相主动发消息

  • 持续保持连接,不需要重复建立链接

📌 WebSocket 是 真正的全双工通信

类似直接拿了一条 TCP 通道来传输数据。


2. 协议不同

  • HTTP 使用 http://https://

  • WebSocket 使用 ws://wss://

WebSocket 在建立连接时使用 HTTP 协议,然后通过 Upgrade: websocket 切换协议。


3. 通信效率不同

HTTP

  • 每次请求都需要完整的 HTTP 报文头(很大)

  • 大量无意义的 header 消耗带宽

WebSocket

  • 建立连接后,每次消息的头部非常小(通常只有 2 字节)

  • 可以进行二进制传输

  • 性能更高


4. 服务端推送能力

协议 服务端能主动发消息?
HTTP ❌ 不能(必须由客户端请求)
WebSocket ✔️ 可以随时主动推送

二、WebSocket 的主要优点

5. 真正的全双工通信

客户端和服务端随时可以互相发送数据 → 低延迟


6. 适合实时应用

例如:

  • 实时聊天(微信网页版、企业 IM)

  • 实时通知系统(订单变化、消息提醒)

  • 实时体育比分刷新

  • 股票行情 / K 线图

  • 实时在线协作(Google Docs)

  • 游戏匹配、实时同步


7. 网络开销小

WebSocket 数据包头非常小(几字节),对比 HTTP 动辄上百字节的头部 → 带宽消耗更少


8. 保持长连接,延迟更低

不用重复建立 TCP 连接

不用反复发送完整 HTTP 报文

响应速度提升明显。


9. 支持二进制格式

可传输:

  • ArrayBuffer

  • Blob

非常适合:

  • 音视频数据

  • 游戏状态同步

  • IoT 设备数据传输


三、总结:WebSocket vs HTTP

项目 HTTP WebSocket
连接 短连接 长连接
通信方式 半双工 全双工
服务端主动推送 ❌ 不行 ✔️ 可以
数据报文 头部大,冗余 头部小,效率高
实时性
应用场景 普通页面请求 聊天、股票、游戏等实时应用
相关推荐
王二端茶倒水2 天前
从千兆到万兆:宽带运营不能只卖套餐,要管用户生命周期从千兆到万兆:宽带运营需要管理用户生命周期
后端·网络协议·架构
extrao4 天前
🚀 Kea DHCP4 自动分配系统完整搭建
网络协议
喵个咪4 天前
Go-Wind HTTP 服务器从入门到精通
后端·http·go
CSharp精选营4 天前
WebSocket 快速入门教程(附示例源码)
websocket·教程·csharp·实时通信·asp.net-core
不做菜鸟的网工6 天前
BGP特性
网络协议
明月_清风8 天前
开发者网络概念全扫盲:一篇搞定
后端·网络协议
刘马想放假8 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
王二端茶倒水9 天前
一套可落地的无线运营方案,不能只管 AP,还要管用户、计费和运维
网络协议
162723816089 天前
EtherCAT 分布式时钟(DC)原理与配置实战:把多轴真正"对齐到同一时刻"
网络协议