W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
WebSocket客戶端可以請(qǐng)求本規(guī)范的擴(kuò)展,且WebSocket服務(wù)器可以接受一些或所有客戶端請(qǐng)求的擴(kuò)展。服務(wù)器不必響應(yīng)不是客戶端請(qǐng)求的任何擴(kuò)展。如果擴(kuò)展參數(shù)包含在客戶端和服務(wù)器之間的協(xié)商中,這些參數(shù)必須按照參數(shù)應(yīng)用到的擴(kuò)展規(guī)范來選擇。
客戶端通過包含一個(gè)|Sec-WebSocket-Extensions|頭字段請(qǐng)求擴(kuò)展,其按照正常的HTTP頭字段規(guī)則(參考[RFC2616], 4.2節(jié))并且頭字段的值按照以下ABNF定義[RFC2616]。注意本章使用的ABNF語法/規(guī)則來源于[RFC2616],包括“隱式的 LWS規(guī)范”。如果客戶端或服務(wù)器在協(xié)商階段接收到的值不符合下邊的ABNF,這種畸形數(shù)據(jù)的接收人必須立即失敗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) ]
;當(dāng)使用引用字符串的語法變種時(shí),引用字符串之后的值必須
;符合’token’ABNF
注意,像其他HTTP頭字段,這個(gè)頭字段可以跨多個(gè)行分割或組合,因此,以下是等價(jià)的:
Sec-WebSocket-Extensions: foo
Sec-WebSocket-Extensions: bar; baz=2
完全等價(jià)于
Sec-WebSocket-Extensions: foo, bar; baz=2
所有使用的extension-token必須是一個(gè)egistered token(參考11.4節(jié))。任何給定擴(kuò)展提供的參數(shù)必須被擴(kuò)展定義。注意,客戶端只需提供使用任何公布的擴(kuò)展,除非服務(wù)器表示它希望使用使用擴(kuò)展,否則必須使用它們。
注意,擴(kuò)展的順序是重要的。在多個(gè)擴(kuò)展間的相互作用可以定義在定義擴(kuò)展的文檔中。在沒有這樣定義的情況下,解釋是它請(qǐng)求中的客戶端列出的頭字段表示一個(gè)它希望使用的頭字段的偏好,第一個(gè)列出的選項(xiàng)是最優(yōu)選的。服務(wù)器在響應(yīng)中列出的擴(kuò)展表示擴(kuò)展是實(shí)際正在用于連接的擴(kuò)展。擴(kuò)展應(yīng)該修改數(shù)據(jù)和/或組幀,數(shù)據(jù)的操作順序應(yīng)該假定是與打開階段握手期間服務(wù)器響應(yīng)中列出的擴(kuò)展順序是一樣的。
例如,如果有兩個(gè)擴(kuò)展“foo”和“bar”,且如果服務(wù)器發(fā)送的頭字段|Sec-WebSocket-Extensions|有值“foo”、“bar”,那么數(shù)據(jù)上的操作將變?yōu)閎ar(foo(data)),是更改數(shù)據(jù)本身(如壓縮)或更改可能“堆疊(stack)”的組幀。
可接受的擴(kuò)展頭字段(注意:為了可讀性,將折疊較長行)的非規(guī)范化例子:
Sec-WebSocket-Extensions: deflate-stream
Sec-WebSocket-Extensions: mux; max-channels=4; flow-control,
deflate-stream
Sec-WebSocket-Extensions: private-extension
服務(wù)器通過包含一個(gè)容納了一個(gè)或多個(gè)擴(kuò)展的客戶端請(qǐng)求的|Sec-WebSocket-Extensions|頭字段來接受一個(gè)或多個(gè)擴(kuò)展。所有擴(kuò)展參數(shù)的解釋,和什么構(gòu)成一個(gè)有效的到客戶請(qǐng)求的參數(shù)集的服務(wù)器響應(yīng),將由各個(gè)擴(kuò)展定義。
擴(kuò)展提供了一種機(jī)制來實(shí)現(xiàn)選擇性加入的附加協(xié)議特性。本文檔沒有定義任何擴(kuò)展,但實(shí)現(xiàn)可以使用單獨(dú)定義的擴(kuò)展。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: