news 2026/5/28 14:48:27

WebSocket介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WebSocket介绍

文章目录

      • 一、背景与动机
      • 二、核心特点
      • 三、工作流程
      • 四、应用场景
      • 五、安全考虑
      • 六、编程示例(简要)
      • 七、与类似技术对比

WebSocket 是一种在单个 TCP 连接上进行全双工通信的网络协议,由 HTML5 规范引入,旨在解决传统 HTTP 协议在实时通信场景中的局限性。


一、背景与动机

传统的 Web 应用基于 HTTP/1.1,采用“请求-响应”模型:

  • 客户端(如浏览器)发起请求;
  • 服务器处理后返回响应;
  • 连接随即关闭。

这种模式不适合需要服务器主动推送数据低延迟双向通信的场景(如聊天应用、实时游戏、股票行情、协同编辑等)。为实现“伪实时”,早期常采用轮询(polling)或长轮询(long polling),但这些方法存在:

  • 高延迟;
  • 高开销(频繁建立连接、重复头部);
  • 服务器资源浪费。

WebSocket 正是为了解决这些问题而设计。


二、核心特点

  1. 全双工通信
    客户端和服务器可同时独立发送数据,无需等待对方响应。

  2. 持久连接
    一次握手建立连接后,连接保持打开,直到显式关闭。

  3. 低开销
    数据帧头部极小(2~14 字节),相比 HTTP 的冗余头部更高效。

  4. 基于 TCP
    可靠、有序、面向连接。

  5. 兼容 HTTP 端口
    默认使用ws://(80 端口)或wss://(443 端口,加密),便于穿越防火墙和代理。


三、工作流程

  1. 握手阶段(HTTP Upgrade)
    客户端通过 HTTP 发起升级请求:

    GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Version: 13

    服务器响应:

    HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

    握手成功后,底层 TCP 连接转为 WebSocket 协议。

  2. 数据传输阶段
    双方可通过 WebSocket 帧(frame)自由发送文本(UTF-8)或二进制数据。

  3. 关闭连接
    任一方可发送关闭帧(close frame),实现优雅关闭。


四、应用场景

  • 实时聊天/消息系统
  • 在线多人游戏
  • 实时仪表盘(监控、金融数据)
  • 协同文档编辑(如 Google Docs)
  • IoT 设备状态同步

五、安全考虑

  • 使用wss://(WebSocket Secure)防止中间人攻击;
  • 验证Origin头防止跨站 WebSocket 劫持(CSWSH);
  • 对用户身份进行认证(通常在握手前通过 Cookie 或 Token);
  • 限制连接数防 DoS。

六、编程示例(简要)

前端(JavaScript)

constws=newWebSocket('wss://example.com/socket');ws.onopen=()=>ws.send('Hello Server');ws.onmessage=(event)=>console.log('Received:',event.data);ws.onclose=()=>console.log('Connection closed');

后端(Python + websockets 库)

importasyncioimportwebsocketsasyncdefhandler(websocket,path):asyncformessageinwebsocket:awaitwebsocket.send(f"Echo:{message}")start_server=websockets.serve(handler,"localhost",8765)asyncio.get_event_loop().run_until_complete(start_server)asyncio.get_event_loop().run_forever()

七、与类似技术对比

技术双向通信持久连接开销浏览器支持
HTTP 轮询
长轮询半双工
Server-Sent Events (SSE)单向(服务器→客户端)✅(除 IE)
WebSocket极低✅(现代浏览器)

WebSocket 已成为现代 Web 实时通信的事实标准,广泛用于需要低延迟、高频率交互的应用中。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/22 12:04:17

vue3+python基于Java Web校园活动管理系统的设计与实现

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 随着高校规模的扩大和校园活动的日益丰富,传统的人工管理方式已无法满足高效、便捷的需求。基于Vue3、Python和Jav…

作者头像 李华
网站建设 2026/5/26 9:19:01

vue3+python基于智能推荐算法的网上生鲜销售系统 开题

目录研究背景与意义系统架构与技术方案核心功能设计创新点与预期成果开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!研究背景与意义 随着电子商务的快速发展和消费者对生鲜产品需求的增长&…

作者头像 李华
网站建设 2026/5/26 14:44:42

.植物病虫害类数据集**** 玉米叶片病虫害数据集 /玉米虫害数据集 水稻叶片及虫害/大豆/小麦/苹果/柑橘葡萄/南瓜/樱桃/荔枝/农业病虫害.交通类数据集**** 极端天气数据集 恶劣天气数据

1.植物病虫害类数据集 玉米叶片病虫害数据集 /玉米虫害数据集 水稻叶片及虫害/大豆/小麦/苹果/柑橘葡萄/南瓜/樱桃/荔枝/农业病虫害类等等等 ** 2.交通类数据集** 极端天气数据集 恶劣天气数据集 雾天道路行驶数据集 黑夜情境下的交通数据集 红绿灯检测数据集 疲劳驾驶检测数据…

作者头像 李华
网站建设 2026/5/27 22:42:17

施密特触发器双阈值电压设定操作指南

施密特触发器双阈值电压设定实战指南:从原理到应用的完整解析你有没有遇到过这样的问题?一个看似简单的按键,按下去却在系统里“连击”好几次;传感器输出明明变化缓慢,MCU却频繁误判状态;长导线传来的信号总…

作者头像 李华
网站建设 2026/5/23 4:45:58

2026年AI驱动开发:5个你必须掌握的工具

AI革命下的测试新纪元 2026年,人工智能已深度融入软件开发全生命周期,为测试从业者带来颠覆性变革。据Gartner预测,到2026年,70%的企业将依赖AI工具优化测试流程,减少人为错误并加速交付。作为测试工程师,…

作者头像 李华
网站建设 2026/5/20 23:08:25

‌测试工程师的AI生存指南:如何不被机器人取代?‌

序章:当测试遇见AI——危机还是转机? 据Gartner 2025年行业报告,AI自动化测试工具已覆盖全球73%企业的回归测试场景,但缺陷漏测率反而上升12%。这一矛盾现象揭示:AI在提升执行效率的同时,放大了人类测试者…

作者头像 李华