WebSocket与Http、Https有什么区别?

1 个回答

  • 李寒衣
    世界上没有快乐的地方,只有快乐的人。
    ## 1. 协议层面的区别 | 协议 | 基础协议 | 传输方向 | 连接特性 | | ------------- | -------------------------------- | ------------------- | ---------------------------------------- | | **HTTP** | 基于 TCP,应用层协议 | **单向**(客户端请求,服务端响应) | 请求-响应后连接可关闭(短连接)或保持(HTTP/1.1 Keep-Alive) | | **HTTPS** | HTTP + TLS/SSL 加密 | 单向 | 加密后的 HTTP,保证**机密性、完整性、身份认证** | | **WebSocket** | 基于 TCP,独立协议(握手阶段走 HTTP/HTTPS 升级) | **双向**(全双工通信) | 一次握手后建立长连接,双向实时传输 | ## 2. 连接建立方式 * **HTTP / HTTPS** 1. 客户端发起请求(GET/POST...) 2. 服务端返回响应 3. 请求-响应结束,连接可关闭或复用 * **WebSocket** 1. 第一次连接使用 HTTP/HTTPS 发送 `Upgrade: websocket` 请求 2. 服务器返回 `101 Switching Protocols` 状态码 3. 双方切换到 WebSocket 协议,建立**长连接** 4. 后续双向数据传输不再需要 HTTP 头 ## 3. 数据传输方式 | 特性 | HTTP/HTTPS | WebSocket | | -------- | -------------------------------- | ------------------------ | | **通信模式** | 请求-响应 | 全双工(客户端/服务端可随时发消息) | | **数据格式** | 文本(JSON、HTML 等)或二进制文件(需 HTTP 包头) | 纯文本或二进制帧,协议头很小(2\~14 字节) | | **实时性** | 低,需要轮询或长轮询 | 高,毫秒级推送 | | **带宽开销** | 大,每次请求带完整 HTTP 头 | 小,握手后只发很小帧头 | ## 4. 加密与安全 * **HTTP**:明文传输,不安全 * **HTTPS**:加密的 HTTP,数据在 TLS 通道内传输 * **WebSocket**: * `ws://` → 明文 * `wss://` → TLS 加密(相当于 HTTPS 里的加密级别) ## 5. 使用场景对比 | 场景 | 推荐协议 | | ----------------------- | --------------- | | 页面数据加载、文件下载、表单提交 | HTTP/HTTPS | | 支付、登录、交易等敏感信息 | HTTPS | | 即时聊天、股票行情推送、游戏状态同步、协同编辑 | WebSocket / WSS | ## 6. 总结对比表 | 对比项 | HTTP | HTTPS | WebSocket | | ---- | ----------------- | ----------------- | ------------ | | 连接类型 | 短/长连接(Keep-Alive) | 短/长连接(Keep-Alive) | 长连接 | | 通信方向 | 单向 | 单向 | 双向 | | 实时性 | 低 | 低 | 高 | | 安全性 | 低 | 高 | ws 低 / wss 高 | | 应用场景 | 网页请求/响应 | 安全网页传输 | 实时交互 |
    发布于 2025-08-12 22:32 •IP属地 浙江
    举报
    评论
    收藏