WebSocket | 一点简单了解

文章目录

    • [什么是 WebSocket 协议?](#什么是 WebSocket 协议?)
    • [WebSocket 的工作原理?](#WebSocket 的工作原理?)
    • [WebSocket 与 HTTP 的区别?](#WebSocket 与 HTTP 的区别?)
    • [WebSocket 的典型应用场景?](#WebSocket 的典型应用场景?)
    • [WebSocket 为什么比轮询更高效?](#WebSocket 为什么比轮询更高效?)
    • [WebSocket 如何保持心跳?](#WebSocket 如何保持心跳?)
    • [WebSocket 如何处理断线重连?](#WebSocket 如何处理断线重连?)
    • [WebSocket 的安全性如何保障?](#WebSocket 的安全性如何保障?)

什么是 WebSocket 协议?

  • WebSocket 是一种在 单个 TCP 连接 上 进行 全双工通信 的协议。
  • HTTP 是 请求-响应模型(客户端主动,请求一次返回一次)。
  • WebSocket 是 持久化连接(连接建立后,客户端和服务端都可以随时互发消息)。

WebSocket 的工作原理?

  • WebSocket 是在 一个已建立的 TCP 连接上,通过一次 HTTP 升级握手把协议从 HTTP 切换成 WebSocket,从此客户端和服务器之间可以进行 双向、低延迟、持续的帧(frame)级别通信。
  1. 客户端与服务器建立 TCP 连接(三次握手,TCP 层,浏览器自动处理)。
  2. 客户端发起 HTTP 升级(Upgrade)握手,请求从 HTTP 切换到 WebSocket。
  3. 服务器校验请求并返回 101 Switching Protocols,握手完成,协议升级。
  4. 握手完成后,双方通过 WebSocket 帧(frame) 在同一 TCP 连接上往返发送消息(双向)。
  5. 任意一方可发送 Close 帧关闭连接。
  • WebSocket 连接的建立过程分为两个阶段:首先客户端和服务器通过 TCP 三次握手建立底层连接;然后客户端发起一个带有 Upgrade: websocket 的 HTTP 请求;服务端返回 101 Switching Protocols 响应后,协议正式从 HTTP 升级为 WebSocket。之后双方就在同一个 TCP 连接上进行全双工通信,无需再频繁建立连接。
go 复制代码
Client                          Server
<----- TCP three-way handshake ----------> (完成)
GET /chat  Upgrade: websocket  --------->  (HTTP 握手请求)
<----- 101 Switching Protocols ----------> (握手成功)
<--------------------------------------->  (WebSocket frames 双向通信)
Client 或 Server 发送 Close 帧 ---------->  (连接关闭)

WebSocket 与 HTTP 的区别?

WebSocket 的典型应用场景?

  1. 在线聊天、弹幕系统
  2. 股票 / 币价 实时推送
  3. 在线游戏状态同步
  4. 协同编辑(如多人文档编辑)
  5. 实时监控系统(如服务器状态、日志推送)

WebSocket 为什么比轮询更高效?

  • 轮询每次都建立 HTTP 请求,带大量请求头和握手开销。
  • WebSocket 连接只建立一次,之后实时推送。
  • 减少延迟和网络带宽消耗。

WebSocket 如何保持心跳?

  • 常见心跳机制:
    1. 客户端周期性发送 Ping 帧;
    2. 服务端响应 Pong 帧;
    3. 若超时未响应则断开重连。

WebSocket 如何处理断线重连?

  • 客户端检测到连接断开(或心跳超时);
  • 重新发起 WebSocket 连接;
  • 通常结合 指数退避算法 或 固定间隔重连。

WebSocket 的安全性如何保障?

  • 使用 wss://(基于 TLS 的 WebSocket);
  • 验证 token;
  • 控制消息大小、速率;
  • 设置连接超时。
相关推荐
FPC工厂——皇榜科技2 小时前
机器人灵巧手线路板:从“握得住”到“摸得准”:一只机械手的柔性神经密码
网络·人工智能·科技·机器人·pcb工艺
Orange_sparkle2 小时前
Pi Agent vs LangGraph:从人机交互、企业 RAG 到持久化工作流的完整选型指南
java·网络·人机交互
烟雨江南7853 小时前
200路并发语音识别系统实践:CPU、GPU与国产昇腾三种部署方案怎么选?
人工智能·websocket·音视频·语音识别·ai客服
用户59362865610333 小时前
Socket.IO 从入门到原理:一份新手也能看懂的完整笔记
websocket
xiaoye-duck3 小时前
《Linux 网络编程》深入传输层 UDP 协议原理:端口、报文、缓冲区与内核源码解析
linux·网络·udp
好评1244 小时前
【Linux】数据链路层
linux·运维·网络
天衍四九-4 小时前
第一章:从 LLM 到 Agent —— DeepSeek Harness 入门
网络·数据库·人工智能·python
Jae den4 小时前
网络丢包是什么?
网络
XR1234567885 小时前
医院无线整网高密覆盖选型深度解析
运维·网络
发量惊人的中年网工5 小时前
企业一体化安全网关选型:适用规模、需求架构与实施建议
网络