WebSocket和HTTP的區別與聯絡

來源:互聯網
上載者:User

標籤:串連   位元組流   通訊協議   example   sock   電腦   web服務   獨立   cti   

WebSocket是一個電腦通訊協議,在單個TCP串連上提供全雙工系統的通訊模式。WebSocket設計用於Web瀏覽器和Web伺服器之間的通訊,但也可以用於其他的用戶端和應用伺服器。WebSocket是獨立的基於TCP的協議。WebSocket和HTTP的關係是,WebSocket的握手被翻譯成HTTP的升級請求。WebSocket協議可以降低Web伺服器和瀏覽器之間的開銷,這個特性適合即時資料的傳輸。WebSocket的協議特性,讓客服端與伺服器之間沒有用戶端請求的請求的情況進行標準通訊成為可能,另外也可以在串連開啟的情況進行資料的收發。伺服器與瀏覽器之間的雙向通訊就按這種方式進行。協議的通訊連接埠為TCP連接埠80或者443,這樣就不會進行非Web通訊時被防火牆攔截。

不同於HTTP,WebSocket提供全雙工系統的通訊。另外WebSocket提供基於TCP的訊息流程,TCP處理位元組流。

握手:

為了建立WebSocket串連,用戶端發送WebSocket握手請求,服務端返回WebSocket握手回應,下為樣本。

用戶端請求(和HTTP一樣,每行以\r\n結尾,並且在最後必須有一空行):

GET /chat HTTP/1.1

Host: server.example.com

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==

Sec-WebSocket-Protocol: chat, superchat

Sec-WebSocket-Version: 13

Origin: http://example.com

Server response:

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=

Sec-WebSocket-Protocol: chat

握手類比HTTP,主要是為了服務端在同一連接埠即能處理HTTP串連也處理WebSocket串連。一旦串連建立,通訊就轉向了雙向二進位協議,這個協議並不遵守HTTP協議。

具體關係可以參考:

 

WebSocket和HTTP的區別與聯絡

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.