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;
  • 控制消息大小、速率;
  • 设置连接超时。
相关推荐
qq_452396233 小时前
【AI 架构师】第十篇:Agent 工业化部署 —— 从 FastAPI 到云端全链路监控
网络·人工智能·ai·fastapi
globaldomain3 小时前
什么是用于长距离高速传输的TCP窗口扩展?
开发语言·网络·php
桌面运维家5 小时前
Win10打印机共享故障排查:权限与网络配置详解
开发语言·网络·php
众创五舟战神:l_e01205 小时前
shopee(虾皮)买家号系统搭建:安全下单攻略
网络·安全
中议视控6 小时前
RTSP和RTSM编码推送软件让中控系统控制实现可视化播控
网络·分布式·物联网·5g·音视频
线束线缆组件品替网8 小时前
Amphenol RJE1Y22A53644401线束详解与替代网络线束选型指南
运维·服务器·网络·智能路由器·电脑·51单片机
Du_chong_huan9 小时前
3.2 无连接运输:UDP 协议|《计算机网络:自顶向下方法》精读
网络协议·计算机网络·udp
SeanDe9 小时前
Linux grep 命令用法详解
linux·服务器·网络
志栋智能10 小时前
告别高昂投入:超自动化IT运维的轻量化实践
大数据·运维·网络·人工智能·自动化
妙码生花11 小时前
全新的 TP8+Workerman+BuildAdmin 整合方案,已有近 2000 次下载使用。
websocket·php·thinkphp