HTTP/2 和 WebSocket 协议本身确实不兼容,不能像在 HTTP/1.1 中那样用标准 WebSocket 协议(ws:// / wss://)进行升级握手。但这事儿细节比较多,下面详细讲讲:


✅ HTTP/2 与 WebSocket 的关系

  1. HTTP/2 不直接支持 WebSocket(标准 ws/wss 协议)

WebSocket 的握手过程依赖 HTTP/1.1 的 Upgrade 机制:

GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade

而 HTTP/2 中没有 Upgrade 头和 Connection: upgrade 的机制,所以不能像 HTTP/1.1 那样原生握手。


  1. 但可以使用 WebSocket over HTTP/2(h2-websocket)

为了解决这个问题,IETF 提出了一个草案叫:

RFC 8441: Bootstrapping WebSockets with HTTP/2

也就是 “WebSocket over HTTP/2”,允许在 HTTP/2 的流(stream)中创建 WebSocket 连接。

不过这个协议 不是所有浏览器和服务器都支持。

需要客户端(比如浏览器)+ 服务器(比如 Nginx、Node.js)同时支持该 RFC 才能用。


  1. ✅ 替代方案:使用 HTTP/2 + Server-Sent Events(SSE)或 gRPC

在 HTTP/2 的上下文中,为了实现“伪 WebSocket”通信,以下是常见替代方案:

技术 特点

SSE (Server-Sent Events) 适用于服务端单向推送;兼容性好
gRPC / gRPC-Web 双向通信,基于 HTTP/2,多用于微服务
WebTransport(下一代) 替代 WebSocket 的新协议(支持 HTTP/3)


📌 总结一句话:

HTTP/2 不直接支持传统 WebSocket(ws/wss),但可以通过扩展(如 RFC 8441)或其他协议实现类似效果。


如果你想在 HTTP/2 环境下保持类似 WebSocket 的实时通信,可以考虑:

用 HTTP/1.1 保 WebSocket 支持;

或者 gRPC/gRPC-Web、SSE;

如果客户端和服务端都支持,可以试试 h2-websocket。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85452.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85452.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/85452.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LoRA 与 CoT 冲突吗

对于一个具有CoT 能力的模型来说,采用普通的数据对其进行LoRA 微调可能会使原模型丢失CoT 能力,从而我们进行思考如下 CoT 与 LoRA 的“冲突”理解 目标不完全一致 导致的效果优化方向: CoT 侧重于提高推理能力和可解释性,它鼓励…

Python爬虫-爬取票牛明星演唱会数据,进行数据分析

前言 本文是该专栏的第61篇,后面会持续分享python爬虫干货知识,记得关注。 本文,笔者以“票牛”平台为例。基于Python爬虫,采集“票牛”平台的明星演唱会(包含“演出城市,演出票价,演出时间”等等)的数据。 废话不多说,具体实现思路和详细逻辑,笔者将在正文结合完整…

uniapp的video遮盖了popup

video的默认层级太高,导致popup弹出的时候,部分被video遮挡了 可以利用cover-view,将popup以及内部所有的标签,全都换成cover-view,然后用一个变量控制其显隐 比如原始: 现在:

java面试题02访问修饰符有哪些?区别是什么?

访问修饰符是面向对象编程中实现封装的核心机制,用于控制类、属性、方法等成员的可见性(可访问范围)。不同的访问修饰符决定了其他类或代码在何处可以访问这些成员。 主要的访问修饰符及其区别如下(以 Java 和 C# 为代表&#xf…

在小程序中实现上下左右拖动表格

在小程序的开发中,不可避免会出现上下左右拖动表格的类似需求,下面将把这个简单实现一下 其中主要使用到了overflow: scroll;来使得横向和纵向可以滚动,并且使用负边距 父容器截断的方法来同时隐藏横向和纵向滚动条,从而实现该效…

[MSPM0开发]之九 MSPM0G3507的ADC

[MSPM0开发]之九 MSPM0G3507的ADC 一、 MSPM0G3507 ADC概述二、 MSPM0G3507 ADC系统框图2.1 电压基准2.2 分辨率2.3 硬件均值计算2.4 采样触发源和采样模式2.5 转换模式2.6 转换结果数据格式2.7 高级特性2.7.1 非FIFO模式下的ADC操作(单次转换和重复单次转换&#x…

门锁开关;与我们生活中紧密联系!

门锁开关作为日常生活的核心安全组件,其设计与应用直接影响家居安全、使用便捷性及设备寿命,以下是其关键价值与技术要点的系统分析: 🔒 ‌一、基础功能:安全与便利的平衡‌ ‌物理防护核心‌ ‌锁体结构‌&#xff1…

WRF-Hydro分布式水文模型:洪水预报、水资源管理与规划、生态水文研究、气候变化影响评估、流域综合管理、水电工程规划与运行

目录 第一部分:WRF-Hydro模型功能及运行流程、依赖库准备 第二部分:WRF-Hydro模式编译、离线运行及案例实践 第三部分:结合多案例进行模式数据制备及实践应用 【内容简述】: WRF-Hydro模型是一个分布式水文模型,‌…

OCRBench:评估多模态大模型的OCR能力

论文地址:OCRBench: On The Hidden Mystery of OCR In Large Multimodal Models:2305.07895 OCRBench在10个文本相关任务上测评多模态大模型(LMM)的OCR能力,包含1000个问题-答案对,每个问题-答案对包含以下…

servlet前后端交互

前后端交互目录 servlet流程servlet请求JSON格式实现表格效果完整代码 servlet流程 流程图: 客户端(浏览器): 技术栈:使用 jQuery Ajax 发起异步请求。请求配置: 请求路径:指定目标Servlet的…

4. 时间序列预测的自回归和自动方法(2)

ar_model.AutoReg 模型通过应用以下元素来估计参数 条件最大似然(CML)估计量:这是一种涉及条件对数似然函数最大化的方法,据此认为已知的参数要么由理论假设固定,要么更常见地由估计值代替(LewiseBeck&…

MySQL(84)如何配置MySQL防火墙?

MySQL防火墙(MySQL Enterprise Firewall)是一种MySQL企业版特性,用于保护数据库免受SQL注入和其他恶意活动的攻击。它通过学习和监控合法SQL语句,创建一个允许列表,从而阻止未在列表中的SQL语句。 1. 启用MySQL防火墙…

优化 Python 爬虫性能:异步爬取新浪财经大数据

一、同步爬虫的瓶颈 传统的同步爬虫(如requestsBeautifulSoup)在请求网页时,必须等待服务器返回响应后才能继续下一个请求。这种阻塞式I/O操作在面对大量数据时存在以下问题: 速度慢:每个请求必须串行执行&#xff0…

Visual Studio Code (VSCode) Python 开发环境配置完整指南

一、安装准备 1. 安装 VSCode 官网下载: Visual Studio Code - Code Editing. Redefined安装时建议勾选: "添加到PATH" (方便终端调用)"注册为受支持的文件类型编辑器"2. 安装 Python 官网下载: Download Python | Python.org安装时勾选: "Add Pytho…

智能数据标签引擎:企业级分类分级与动态管控实践

在数字化转型浪潮中,企业数据量呈爆发式增长,数据的多样性和复杂性也不断提升。如何对海量数据进行高效分类分级,并实施动态管控,成为企业释放数据价值、保障数据安全的关键挑战。智能数据标签引擎应运而生,它通过引入…

Redis(1)——RDB持久化

在追求极致性能的 Redis 世界里,数据安全是永恒的主题。作为内存数据库,Redis 重启或宕机意味着数据丢失的风险。RDB (Redis Database) 持久化,又称快照持久化,是 Redis 提供的最经典、最高效的数据落地方案之一。它通过生成某个时…

深度剖析无感刷新Token:领码SPARK平台赋能微服务认证的智能实践

摘要 在现代微服务架构与数字化转型大潮中,用户身份认证的连续性与安全性尤为关键。无感刷新Token技术通过智能的双Token机制,确保用户访问凭证在不打扰用户的前提下自动续期,避免因Token过期导致的频繁登录中断。本文结合领码SPARK融合平台的…

声网对话式 AI:开启我的编程进阶之旅

转行学习编程时,复杂的代码逻辑常让我无从下手,直到遇见声网对话式AI。它像一位耐心的导师,不仅用通俗易懂的语言帮我理解Python循环嵌套等难点,还提供实际代码示例。当我开发学生成绩管理系统时,它甚至直接生成框架代…

精准护理,点亮进行性核上性麻痹患者生活希望

进行性核上性麻痹(PSP)是一种罕见的神经系统变性疾病,主要表现为姿势平衡障碍、眼球运动障碍、吞咽困难等症状。科学的健康护理能有效延缓病情进展,提升患者生活质量,可从以下方面着手。 ​在饮食护理上,因…

记录一次 Oracle 表空间不足问题的解决过程

记录一次 Oracle 表空间不足问题的解决过程 6月14日,某医院信息科用户反映无法提交门诊病例,门诊处方也无法开立。其他功能是正常的。考虑可能是与门诊病例有关的表空间用完了。 Oracle表空间的数据文件默认是可以自动增长的,但是单个文件的…