1075 字
约 3 分钟
5
WebSocket 与 HTTP:实时通信的核心区别

WebSocket 与 HTTP:实时通信的核心区别

1. 什么是 WebSocket?

WebSocket 是一种基于 TCP 的全双工通信协议,它允许客户端和服务器建立一次连接后,双方可以持续进行数据传输。

传统 HTTP 通信模式是:

客户端请求 → 服务器响应 → 连接结束

而 WebSocket 是:

客户端连接 → 建立长连接 → 双方持续通信

因此 WebSocket 非常适合实时场景,例如:

  • 在线聊天
  • 实时股票行情
  • 游戏同步
  • 在线协作编辑
  • 实时监控系统

2. WebSocket 工作流程

WebSocket 建立连接时,会先通过 HTTP 完成一次握手。

例如:

客户端:

GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade

服务器返回:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade

握手成功后,通信协议从 HTTP 切换为 WebSocket。

之后:

客户端  <================> 服务器

      双向实时传输数据

双方都可以主动发送消息。


3. HTTP 与 WebSocket 对比

对比项 HTTP WebSocket
通信方式 请求-响应 双向通信
连接方式 短连接为主 长连接
数据发送 客户端主动请求 双方主动发送
实时性 较低
服务器主动推送 困难 支持
开销 每次请求有 HTTP 头 建立后开销低
适用场景 网页、接口请求 聊天、游戏、实时数据

4. 为什么 HTTP 不适合实时通信?

假设聊天室:

用户 A 发送消息:

A ---> 服务器
       |
       |
       v
    用户 B

如果使用 HTTP:

用户 B 想知道有没有新消息,需要不断:

请求
请求
请求
请求

这种方式叫:

轮询(Polling)

缺点:

  • 浪费服务器资源
  • 延迟高
  • 大量无效请求

而 WebSocket:

客户端A
   |
   |
 WebSocket连接
   |
   |
服务器
   |
   |
客户端B

服务器收到消息后,可以立即推送给 B。


5. WebSocket 的优势

① 实时性强

服务器可以主动发送:

例如:

股票价格变化:

服务器:
价格上涨

↓

客户端立即收到

② 减少网络开销

HTTP:

GET /message

Header:
Cookie
Token
User-Agent
...

每次请求都有大量头信息。

WebSocket:

建立连接后:

message: hello

数据更加轻量。


③ 支持大量实时连接

例如:

  • 在线客服系统
  • 游戏服务器
  • 直播弹幕

都可以通过 WebSocket 保持连接。


6. WebSocket 的缺点

虽然 WebSocket 很强,但也不是万能。

① 长连接占用资源

服务器需要维护:

用户1  connection
用户2  connection
用户3  connection
...

连接数量巨大时,需要考虑:

  • 内存
  • CPU
  • 连接管理

② 不适合普通接口请求

例如:

查询用户信息:

GET /user/1001

使用 HTTP 更简单。


③ 部署复杂度更高

需要考虑:

  • 心跳检测
  • 断线重连
  • 负载均衡

7. WebSocket 应用场景

适合:

即时聊天

例如:

微信、在线客服。


实时游戏

例如:

玩家移动:

玩家A移动
      |
      v
服务器同步
      |
      v
其他玩家立即看到

实时数据

例如:

股票:

价格变化
 ↓
服务器推送
 ↓
客户端更新

8. 总结

HTTP 和 WebSocket 并不是替代关系,而是不同场景使用不同工具。

HTTP:

适合一次请求一次响应。

WebSocket:

适合需要持续、实时、双向通信的场景。

简单记忆:

HTTP:
客户端问,服务器答

WebSocket:
客户端和服务器一直聊天

在现代互联网系统中,两者通常结合使用:

例如:

HTTP:
登录、获取数据

WebSocket:
实时消息推送

这也是目前很多大型系统的常见架构。

WebSocket 与 HTTP:实时通信的核心区别
http://clxhxhhr.top/posts/403/
作者
clxstart
发布于
2026-09-01
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。