http2與websocket關系

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表空間的數據文件默認是可以自動增長的,但是單個文件的…