news 2026/2/25 16:59:18

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/2/23 11:23:11

Qwen2.5-7B-Instruct部署教程:智能数据分析流水线

Qwen2.5-7B-Instruct部署教程:智能数据分析流水线 1. 技术背景与目标 随着大语言模型在自然语言理解、代码生成和结构化数据处理能力的持续提升,将高性能模型集成到实际业务流程中已成为构建智能化系统的关键环节。Qwen2.5-7B-Instruct 作为通义千问系…

作者头像 李华
网站建设 2026/2/21 16:48:08

YOLOv9教育科研应用:高校计算机视觉课程实验设计

YOLOv9教育科研应用:高校计算机视觉课程实验设计 1. 背景与教学目标 随着人工智能技术的快速发展,计算机视觉已成为高校人工智能、自动化、电子信息等专业的重要教学内容。目标检测作为其中的核心任务之一,广泛应用于智能监控、自动驾驶、工…

作者头像 李华
网站建设 2026/2/24 19:09:57

AI智能二维码工坊教程:安全加密二维码的生成与识别

AI智能二维码工坊教程:安全加密二维码的生成与识别 1. 引言 1.1 学习目标 本文将带你全面掌握如何使用“AI 智能二维码工坊”这一轻量级、高性能的二维码处理工具,完成从安全加密内容生成二维码到高精度图像识别解码的完整流程。学习完成后&#xff0…

作者头像 李华
网站建设 2026/2/19 19:00:57

Python-vue3校园学科竞赛管理系统

目录校园学科竞赛管理系统的摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!校园学科竞赛管理系统的摘要 校园学科竞赛管理系统基于Python和Vue3技术栈开发,旨在实现学科竞赛…

作者头像 李华
网站建设 2026/2/19 3:25:33

vue3+python农田多源数据智能采集与可视化系统设计

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 随着现代农业向数字化、智能化方向发展,农田多源数据的采集与可视化成为提升农业生产效率的关键技术。本研究基于V…

作者头像 李华
网站建设 2026/2/24 12:34:35

学习笔记——ARM Cortex-A 裸机开发体系架构

ARM Cortex-A 裸机开发体系架构一、ARM体系结构全景视图1. 嵌入式系统层级架构┌─────────────────────────────────────────────────┐ │ 应用层 (APP) │ ├────────────…

作者头像 李华