WebSocket協議原始碼文件分析三

2021-10-11 16:15:47 字數 1555 閱讀 5694

根據規範,在chromium中通過http / 2實現對websockets的支援,請參閱上的最新草案。僅當伺服器已經通過規範中定義的http / 2 settings引數通過http / 2公布了對websockets的支援時,這僅用於安全的websockets請求。在其他情況下,將像當前一樣建立到源的新非http / 2連線。

如果到伺服器的連線使用http / 2,則當前需要為安全的websocket建立新的非http / 2 tls連線,這需要幾個rtt。通過消除對新連線的需求,該新功能有望顯著減少為伺服器開啟websocket所需的時間。

這是乙個網路層功能,會影響所有使用chromium網路堆疊的支援websocket的平台。

網路堆疊。大多數實現是在// net / websockets中進行的,在// net / http,// net / spdy和// components / network_session_configurator中進行了其他更改。

net.websocket.handshakeresult2跟蹤通過http / 2而非非http / 2發起的websockets請求的數量。 通過http / 2的websockets需要伺服器支援,目前很少使用。

還將收集資料以測量從分派請求到握手完成所經過的時間,以量化改進。

對於http / 2和非http / 2連線,將分別跟蹤websocket請求失敗,握手失敗和協商的websocket上的錯誤。

鑑於使用率非常低,可以在樹的頂端啟用此功能,並允許通過通常的chrome渠道進行推廣。 開發人員還可以使用–enable-websocket-over-http2命令列標誌啟用它,以使與伺服器實現的互操作性測試更加容易。

速度是這種變化的主要動力。 與web伺服器的所有連線中有很大一部分都是通過http / 2進行的,但是當前沒有通過http / 2來支援websocket的情況下,當前需要一些rtt來協商乙個新的連線(確切的數目取決於是否使用了tcp fast open, websocket請求是否安全,是否仍在使用實驗性tls 0-rtt模式等)。 通過http / 2支援websockets將大大減少延遲。

chromium僅支援加密的http / 2連線。 通常會根據連線證書對websocket請求的**執行檢查。 此功能僅影響已加密的安全websocket,在大多數情況下,預計在tls握手期間將與伺服器協商完全相同的密碼引數。

此功能目前沒有與隱私相關的缺點。 另一方面,不為websocket請求開啟新的tls連線實際上會洩漏較少的有關使用者活動的資訊。

互操作性測試是與與在其端實現支援的伺服器開發人員合作手動進行的。 用於傳達實施狀態的主要公共渠道是ietf httpbis工作組的郵件列表,在該列表中協調規範的制定。

啟動此功能後,將需要刪除現場試用引數和命令列標誌。

初始實現僅使用現有的http / 2連線,並且僅在從伺服器接收到適當的settings框架廣告websockets支援的情況下才可以使用。 對此的自然擴充套件是為websocket請求開啟http / 2連線,例如,如果伺服器以前已經宣傳了websockets支援。

web平台測試當前不支援http / 2,但是一旦實現,則可以並且應該將基於http / 2測試的websockets包含在測試套件中。

soul同步資料 websocket原始碼分析

通過官網資料了解到,soul支援websocket,http,zookeeper等同步方式。如果是通過websocket 同步策略,則將變更後的資料主動推送給 soul web,並且在閘道器層,會有對應的websocketcachehandler 處理器處理來處 admin 的資料推送。這列應該是官...

soul原始碼學習 六 websocket資料同步

資料同步過程 原始碼分析 spring框架提供了事件發布訂閱機制,由發布者 訂閱者 事件三個關鍵要素組成,發布者發布事件後,由該事件的訂閱者進行事件處理。事件 所有事件均繼承該類 private static final long serialversionuid 70990577081835719...

WebSocket握手協議

connection keep alive 客戶端 啦啦啦,有沒有新資訊 request 服務端 沒有 response 客戶端 啦啦啦,有沒有新資訊 request 服務端 沒有。response 客戶端 啦啦啦,有沒有新資訊 request 服務端 你好煩啊,沒有啊。response 客戶端 啦...