易君召
易君召
发布于 2026-10-26 / 4 阅读
0

一文看懂WebSocket vs HTTP 核心区别

一句话概括: HTTP 是一问一答(单向请求,短连接);WebSocket 是全双工长连接,双方可以随时互相发消息。

1. 通信模式(最核心)

  • HTTP:半双工 客户端发请求 → 服务器返回响应,一次请求一次应答。服务器不能主动推消息给客户端。 (新版本 HTTP/2、HTTP/3 有服务端推送,但不是原生双向实时通道,和 WebSocket 定位不一样)

  • WebSocket:全双工 连接建立之后,客户端和服务端随时互相发送数据,不用每次都发请求头。

2. 连接生命周期

  • HTTP:默认短连接(HTTP/1.1 的 keep-alive 只是复用 TCP 连接,依然是一问一答模式,不是长会话通道) 一次请求完成后,连接空闲就会断开。

  • WebSocket:长连接 只需要一次握手,TCP 连接持续保持,直到一方主动关闭。

WebSocket 握手本身是通过 HTTP 请求完成的:用一个带 Upgrade: websocket 的 HTTP 请求升级协议,成功之后,后续报文就不再是 HTTP 报文,走 WebSocket 帧协议。

3. 头部开销

  • HTTP:每次请求都要带上大量 Header(Cookie、UA、参数等),开销大

  • WebSocket:握手之后传输的是二进制 / 文本帧,头部极小(2~10 字节左右),适合高频实时消息

4. 适用场景

✅ HTTP 适合

  • 普通页面加载、接口查询、文件上传下载、后台管理接口

  • 不需要实时,客户端主动拉取数据

✅ WebSocket 适合

  • 聊天室、在线通知、实时数据大屏、股票行情、游戏、在线协同编辑、IoT 设备上报

  • 需要服务端主动推送、高频小消息

5. 端口 & 协议标识

  • HTTP:http:// 默认 80;HTTPS:https:// 默认 443

  • WebSocket:ws:// 默认 80;wss://(加密,推荐)默认 443

wss 就是 WebSocket over TLS,和 https 一样加密,生产环境优先 wss

6. 其他补充对比表

对比项

HTTP

WebSocket

方向

客户端主动请求

双向,任意一方随时发

握手

每次都要

只握手一次

消息推送

服务端无法主动推(轮询 / SSE 模拟)

原生服务端推送

数据帧

完整 HTTP 报文,头大

轻量帧,开销低

状态

无状态(每次请求独立)

连接期间可维持会话状态

断线重连

不需要额外处理

业务上一般自己做心跳 + 重连

容易混淆的补充:SSE

很多人把 SSE 和 WebSocket 搞混:

  • SSE(Server-Sent Events):基于 HTTP,只能服务端单向推送给客户端,客户端不能发消息;适合单向实时通知,不用双向交互。

  • WebSocket:双向。

简单选型建议

  1. 只是查数据、提交表单 → HTTP

  2. 服务端要不停推实时数据,不需要客户端频繁回传 → 可选 SSE

  3. 双方都要频繁互相发消息(聊天、实时对战)→ WebSocket


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/websocket-vs-http-core-differences-guide

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/