~码铃薯~

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

http和websocket两者之间有什么区别

一句话总结:HTTP 是“你问我答”的请求-响应协议;WebSocket 是“电话接通后双方随时说话”的全双工长连接协议。WebSocket 建连时会借助 HTTP 握手,但握手完成后就不再走 HTTP 语义了。

维度 HTTP WebSocket
通信模式 请求-响应 全双工
谁先发起 通常只能客户端发请求,服务器响应 连接建立后,客户端和服务器都可主动发消息
连接 短连接,或 Keep-Alive 复用;本质仍是一次次请求 一次握手后保持长连接
状态 协议本身无状态,靠 Cookie/Session 等维持 连接本身有状态
开销 每次请求通常带较多头部,开销较大 握手后用帧传输,帧头小,开销低
数据方向 半双工,请求和响应交替 双向同时收发
URL http:// / https:// ws:// / wss://
默认端口 80 / 443 也是 80 / 443,ws 默认 80,wss 默认 443
安全性 HTTPS = HTTP over TLS WSS = WebSocket over TLS
典型场景 网页、REST API、文件上传下载、普通 CRUD 聊天、在线游戏、协同编辑、股票行情、实时通知

建连过程
WebSocket 先发一个 HTTP GET 请求,带上:

Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Key: ...
Sec-WebSocket-Version: 13

服务器同意后返回 101 Switching Protocols,之后连接升级为 WebSocket,双方通过帧收发数据,支持文本、二进制、ping/pong、close 等。

关键区别理解

  • HTTP:客户端不请求,服务器一般不能主动推。
  • WebSocket:连接建立后,服务器可以随时主动推消息。
  • HTTP/2 虽然有多路复用,但仍然是请求-响应语义,不是 WebSocket 那种全双工。
  • 如果只需要服务器单向推送,SSE 可能更简单;如果只是低频更新,HTTP 轮询也够用。
  • WebSocket 不是替代 HTTP,而是补充:普通接口继续用 HTTP,实时双向通道用 WebSocket。
posted on 2026-09-14 15:13  ~码铃薯~  阅读(3)  评论(0)    收藏  举报