基于HTTP的功能追加協(xié)議

Google 在 2010 年發(fā)布了 SPDY(取自 SPeeDY延刘,發(fā)音同 speedy),其開發(fā)目標(biāo)旨在解決 HTTP 的性能瓶頸芒澜,縮短 Web 頁面的加載時(shí)間(50%)

HTTP的瓶頸

1)一條連接上只可發(fā)送一條請求

2)請求只能客戶端開始义辕。客戶端不可以接收除響應(yīng)以外的指令

3)請求/響應(yīng)未經(jīng)壓縮就發(fā)送淮阐、首部信息越多延遲越大

4)發(fā)送冗長的首部叮阅。發(fā)次都發(fā)送相同的首部浪費(fèi)較多

5)可任意選擇壓縮的數(shù)據(jù)格式刁品。非強(qiáng)制壓縮發(fā)送

SPDY的設(shè)計(jì)和功能

SPDY沒有完全改寫HTTP協(xié)議,而是在TCP/IP的應(yīng)用層和傳輸層之間通過新加會(huì)話層的形式運(yùn)作

SPDY以會(huì)話層的形式加入浩姥,控制對數(shù)據(jù)的流動(dòng)挑随,但還是采用HTTP建立連接

使用SPDY,HTTP協(xié)議額外獲得以下功能:

多路復(fù)用:通過單一的TCP連接勒叠,可以無限制處理多個(gè)HTTP請求

賦予請求優(yōu)先級:可以給請求逐個(gè)分配優(yōu)先級兜挨,解決因低寬帶而導(dǎo)致響應(yīng)變慢的問題

壓縮HTTP首部:壓縮HTTP請求的首部和響應(yīng)的首部,減少數(shù)據(jù)包數(shù)量和發(fā)送的字節(jié)數(shù)

推送功能:支持服務(wù)器主動(dòng)向客戶端推送數(shù)據(jù)功能眯分,不用等待客戶端的請求

服務(wù)器提示功能:服務(wù)端可以主動(dòng)提示客戶端請求所需的資源

WebSocket的設(shè)計(jì)和功能

WebSocket拌汇,即Web瀏覽器和Web服務(wù)器之間全雙工通信標(biāo)準(zhǔn)

一旦Web服務(wù)器和客戶端建立起WebScoket協(xié)議通信連接,之后所有的通信都依靠這個(gè)協(xié)議進(jìn)行

由于是建立在HTTP基礎(chǔ)上的協(xié)議弊决,因此連接的發(fā)起方仍是客戶端噪舀,一旦建立連接,任意一方都可直接發(fā)送報(bào)文

WebSocket協(xié)議的主要特點(diǎn):

推送功能:支持由服務(wù)端直接向客戶端推送數(shù)據(jù)飘诗,而不用等待客戶端的請求

減少通信量:它的首部信量很少与倡,因此通信量也相應(yīng)減少

為了實(shí)現(xiàn)WebSocket通信,在HTTP連接建立后昆稿,需要完成一次“握手”的步驟:

握手*請求:為了實(shí)現(xiàn)WebSocket通信纺座,需要在HTTP的首部添加Upgrade字段,告知服務(wù)器協(xié)議發(fā)送改變

GET /chat HTTP/1.1

Host: server.example.com

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==

Origin: http://example.com

Sec-WebSocket-Protocol: chat, superchat

Sec-WebSocket-Version: 13

Sec-WebSocket-Key是握手必不可少的鍵值

Sec-WebSocket-Protocol是使用的子協(xié)議

握手*響應(yīng):返回狀態(tài)碼101Switching Protocols的響應(yīng)

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

Sec-WebSocket-Protocol: chat

Sec-WebSocket-Accept是握手請求中Sec-WebSocket-Key的字段值生成的

成功握手后溉潭,通信時(shí)不再使用HTTP的數(shù)據(jù)幀净响,采用WebSocket獨(dú)立的數(shù)據(jù)幀

WebSocket的API

JavaScript 可調(diào)用“The WebSocket API”(http://www.w3.org/TR/websockets/,由 W3C 標(biāo)準(zhǔn)制定)內(nèi)提供的 WebSocket 程序接口喳瓣,以實(shí)現(xiàn) WebSocket 協(xié)議下全雙工通信别惦。

50ms發(fā)送一次數(shù)據(jù)實(shí)例:

var socket = new WebSocket('ws://game.example.com:12010/updates');

socket.onopen = function () {

setInterval(function() {

if (socket.bufferedAmount == 0)

socket.send(getUpdateData());

}, 50);

};



想要進(jìn)一步了解WebSocket,看這里

【騰訊Bugly干貨分享】WebSocket 淺析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夫椭,一起剝皮案震驚了整個(gè)濱河市掸掸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖扰付,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堤撵,死亡現(xiàn)場離奇詭異,居然都是意外死亡羽莺,警方通過查閱死者的電腦和手機(jī)实昨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盐固,“玉大人荒给,你說我怎么就攤上這事〉蟛罚” “怎么了志电?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蛔趴。 經(jīng)常有香客問我挑辆,道長,這世上最難降的妖魔是什么孝情? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任鱼蝉,我火速辦了婚禮,結(jié)果婚禮上箫荡,老公的妹妹穿的比我還像新娘魁亦。我一直安慰自己,他們只是感情好羔挡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布洁奈。 她就那樣靜靜地躺著,像睡著了一般婉弹。 火紅的嫁衣襯著肌膚如雪睬魂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天镀赌,我揣著相機(jī)與錄音氯哮,去河邊找鬼。 笑死商佛,一個(gè)胖子當(dāng)著我的面吹牛喉钢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播良姆,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肠虽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了玛追?” 一聲冷哼從身側(cè)響起税课,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤闲延,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后韩玩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垒玲,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年找颓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了合愈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡击狮,死狀恐怖佛析,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情彪蓬,我是刑警寧澤寸莫,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站寞焙,受9級特大地震影響储狭,放射性物質(zhì)發(fā)生泄漏互婿。R本人自食惡果不足惜捣郊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望慈参。 院中可真熱鬧呛牲,春花似錦、人聲如沸驮配。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽型奥。三九已至误窖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間猜绣,已是汗流浹背灰殴。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掰邢,地道東北人牺陶。 一個(gè)月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像辣之,于是被迫代替她去往敵國和親掰伸。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 前面兩篇文章中關(guān)于 HTTP 相關(guān)知識基本上介紹的差不多了怀估,這篇文章是對 HTTP 協(xié)議的補(bǔ)充狮鸭,主要介紹以下三點(diǎn)內(nèi)...
    lijiankun24閱讀 1,308評論 2 3
  • 1. 網(wǎng)絡(luò)基礎(chǔ)TCP/IP HTTP基于TCP/IP協(xié)議族合搅,HTTP屬于它內(nèi)部的一個(gè)子集。 把互聯(lián)網(wǎng)相關(guān)聯(lián)的協(xié)議集...
    yozosann閱讀 3,443評論 0 20
  • 本篇文章篇幅比較長歧蕉,先來個(gè)思維導(dǎo)圖預(yù)覽一下历筝。 一、概述 1.計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)分層 2.TCP/IP 通信傳輸流 ...
    滌生_Woo閱讀 55,001評論 24 557
  • 短期目標(biāo):清丹事業(yè)完成28萬業(yè)績 果實(shí): 我蒙雨露擁有氧氣般的財(cái)富 土壤:安美弘廊谓、父母梳猪、親人、業(yè)力伙伴 發(fā)心: 愿...
    蒙雨露閱讀 130評論 0 0
  • 首先我是出差蒸痹,不是專程旅游的春弥,不過大同小異,可作為旅游參考叠荠。 簽證匿沛,土耳其簽證是電子簽證,非常方便榛鼎,僅次于免簽逃呼,在...
    一小單閱讀 867評論 0 1