基于HTTP的功能追加協議

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

HTTP的瓶頸

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

2)請求只能客戶端開始??蛻舳瞬豢梢越邮粘憫酝獾闹噶?/b>

3)請求/響應未經壓縮就發送、首部信息越多延遲越大

4)發送冗長的首部。發次都發送相同的首部浪費較多

5)可任意選擇壓縮的數據格式。非強制壓縮發送

SPDY的設計和功能

SPDY沒有完全改寫HTTP協議,而是在TCP/IP的應用層和傳輸層之間通過新加會話層的形式運作

SPDY以會話層的形式加入,控制對數據的流動,但還是采用HTTP建立連接

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

多路復用:通過單一的TCP連接,可以無限制處理多個HTTP請求

賦予請求優先級:可以給請求逐個分配優先級,解決因低寬帶而導致響應變慢的問題

壓縮HTTP首部:壓縮HTTP請求的首部和響應的首部,減少數據包數量和發送的字節數

推送功能:支持服務器主動向客戶端推送數據功能,不用等待客戶端的請求

服務器提示功能:服務端可以主動提示客戶端請求所需的資源

WebSocket的設計和功能

WebSocket,即Web瀏覽器和Web服務器之間全雙工通信標準

一旦Web服務器和客戶端建立起WebScoket協議通信連接,之后所有的通信都依靠這個協議進行

由于是建立在HTTP基礎上的協議,因此連接的發起方仍是客戶端,一旦建立連接,任意一方都可直接發送報文

WebSocket協議的主要特點:

推送功能:支持由服務端直接向客戶端推送數據,而不用等待客戶端的請求

減少通信量:它的首部信量很少,因此通信量也相應減少

為了實現WebSocket通信,在HTTP連接建立后,需要完成一次“握手”的步驟:

握手*請求:為了實現WebSocket通信,需要在HTTP的首部添加Upgrade字段,告知服務器協議發送改變

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是使用的子協議

握手*響應:返回狀態碼101Switching Protocols的響應

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的字段值生成的

成功握手后,通信時不再使用HTTP的數據幀,采用WebSocket獨立的數據幀

WebSocket的API

JavaScript 可調用“The WebSocket API”(http://www.w3.org/TR/websockets/,由 W3C 標準制定)內提供的 WebSocket 程序接口,以實現 WebSocket 協議下全雙工通信。

50ms發送一次數據實例:

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

socket.onopen = function () {

setInterval(function() {

if (socket.bufferedAmount == 0)

socket.send(getUpdateData());

}, 50);

};



想要進一步了解WebSocket,看這里

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前面兩篇文章中關于 HTTP 相關知識基本上介紹的差不多了,這篇文章是對 HTTP 協議的補充,主要介紹以下三點內...
    lijiankun24閱讀 1,327評論 2 3
  • 1. 網絡基礎TCP/IP HTTP基于TCP/IP協議族,HTTP屬于它內部的一個子集。 把互聯網相關聯的協議集...
    yozosann閱讀 3,464評論 0 20
  • 本篇文章篇幅比較長,先來個思維導圖預覽一下。 一、概述 1.計算機網絡體系結構分層 2.TCP/IP 通信傳輸流 ...
    滌生_Woo閱讀 55,236評論 24 557
  • 短期目標:清丹事業完成28萬業績 果實: 我蒙雨露擁有氧氣般的財富 土壤:安美弘、父母、親人、業力伙伴 發心: 愿...
    蒙雨露閱讀 138評論 0 0
  • 首先我是出差,不是專程旅游的,不過大同小異,可作為旅游參考。 簽證,土耳其簽證是電子簽證,非常方便,僅次于免簽,在...
    一小單閱讀 1,008評論 0 1