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;
  • 控制消息大小、速率;
  • 设置连接超时。
相关推荐
wadesir1 小时前
当前位置:首页 > 服务器技术 > 正文Linux网络HSRP协议(实现路由器热备份与高可用性的实用指南)
linux·服务器·网络
带土12 小时前
4. 两台win11 笔记本局域网内文件传输
网络
xixixi777773 小时前
“C2隐藏”——命令与控制服务器的隐藏技术
网络·学习·安全·代理·隐藏·合法服务·c2隐藏
在多学一点3 小时前
iptables的源地址转换和iptables的目标地址转换
网络
gadiaola3 小时前
【计算机网络面试篇】HTTP
java·后端·网络协议·计算机网络·http·面试
罗汉松(山水白河)4 小时前
关于串口与UDP通讯的实验
单片机·嵌入式硬件·网络协议·udp·tcp·串口、
Xの哲學4 小时前
Linux 分区表深度技术剖析
linux·网络·算法·架构·边缘计算
fei_sun5 小时前
【复习】计网每日一题1124---UDP首部检验和计算、检验和特殊含义
网络·网络协议·udp
2***57425 小时前
前端WebSocket案例
网络·websocket·网络协议
百***81275 小时前
《计算机网络》(B)复习
网络·计算机网络