9 擴充套件 WebSocket協議翻譯

2021-09-01 18:56:50 字數 1798 閱讀 9648

websocket客戶端可以請求本規範的擴充套件,且websocket伺服器可以接受一些或所有客戶端請求的擴充套件。伺服器不必響應不是客戶端請求的任何擴充套件。如果擴充套件引數包含在客戶端和伺服器之間的協商中,這些引數必須按照引數應用到的擴充套件規範來選擇。

客戶端通過包含乙個|sec-websocket-extensions|頭欄位請求擴充套件,其按照正常的http頭欄位規則(參考[rfc2616], 4.2節)並且頭字段的值按照以下abnf定義[rfc2616]。注意本章使用的abnf語法/規則**於[rfc2616],包括「隱式的 *lws規範」。如果客戶端或伺服器在協商階段接收到的值不符合下邊的abnf,這種畸形資料的接收人必須立即_失敗websocket連線_。

sec-websocket-extensions = extension-list

extension-list = 1#extension

extension = extension-token *( ";" extension-param )

extension-token = registered-token

registered-token = token

extension-param = token [ "=" (token | quoted-string) ]

;當使用引用字串的語法變種時,引用字串之後的值必須

;符合』token』abnf

注意,像其他http頭欄位,這個頭欄位可以跨多個行分割或組合,因此,以下是等價的:

sec-websocket-extensions: foo

sec-websocket-extensions: bar; baz=2

完全等價於

sec-websocket-extensions: foo, bar; baz=2
所有使用的extension-token必須是乙個egistered token(參考11.4節)。任何給定擴充套件提供的引數必須被擴充套件定義。注意,客戶端只需提供使用任何公布的擴充套件,除非伺服器表示它希望使用使用擴充套件,否則必須使用它們。

注意,擴充套件的順序是重要的。在多個擴充套件間的相互作用可以定義在定義擴充套件的文件中。在沒有這樣定義的情況下,解釋是它請求中的客戶端列出的頭字段表示乙個它希望使用的頭字段的偏好,第乙個列出的選項是最優選的。伺服器在響應中列出的擴充套件表示擴充套件是實際正在用於連線的擴充套件。擴充套件應該修改資料和/或組幀,資料的操作順序應該假定是與開啟階段握手期間伺服器響應中列出的擴充套件順序是一樣的。

例如,如果有兩個擴充套件「foo」和「bar」,且如果伺服器傳送的頭字段|sec-websocket-extensions|有值「foo」、「bar」,那麼資料上的操作將變為bar(foo(data)),是更改資料本身(如壓縮)或更改可能「堆疊(stack)」的組幀。

可接受的擴充套件頭欄位(注意:為了可讀性,將摺疊較長行)的非規範化例子:

sec-websocket-extensions: deflate-stream

sec-websocket-extensions: mux; max-channels=4; flow-control,

deflate-stream

sec-websocket-extensions: private-extension

伺服器通過包含乙個容納了乙個或多個擴充套件的客戶端請求的|sec-websocket-extensions|頭字段來接受乙個或多個擴充套件。所有擴充套件引數的解釋,和什麼構成乙個有效的到客戶請求的引數集的伺服器響應,將由各個擴充套件定義。

擴充套件提供了一種機制來實現選擇性加入的附加協議特性。本文件沒有定義任何擴充套件,但實現可以使用單獨定義的擴充套件。

WebSocket握手協議

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

WebSocket協議詳解

1.websocket 是什麼 websocket 是html5提出的乙個協議規範,參考rfc6455 websocket,通過乙個握手的機制,客戶端 瀏覽器 和伺服器 webserver 之間建立乙個tcp連線,從而方便c s之間的通訊。在websocket出現之前 web互動一般是基於 http...

WebSocket協議介紹

websocket,即web瀏覽器與web伺服器之間全雙工通訊標準,其中,websocket協議由ietf定位標準,websocket api由w3c定位標準。一旦web伺服器與客戶端之間建立起websocket協議的通訊連線,之後所有的通訊都依靠這個專用協議進行。通訊過程中互相傳送json xml...