摘要:注意實際上指的是一種協(xié)議,與我們熟知的協(xié)議是同等的一個網絡協(xié)議。協(xié)議與的聯(lián)系是指的一系列新的,或者說新規(guī)范,新技術。注意下面的請求報文與響應報文中的內容不是完整的報文,而是基于請求響應報文添加的內容。
背景
以前的網站為了實現(xiàn)推送功能,使用的方法都是輪詢。所謂的輪詢就是在特定的時間間隔(例如1秒),由瀏覽器向服務器發(fā)出一個 Http request,然后服務器返回最新的數(shù)據(jù)給客戶端瀏覽器,從而給出一種服務端實時推送的假象。由于Http Request的Header(請求頭)很長,而傳輸?shù)臄?shù)據(jù)可能很短就只占一點點,每次請求消耗的帶寬大部分都消耗在 Header上。從網上資料得知后來還有改進的輪詢方法叫做 Comet,使用 Ajax。但這種技術雖然可達到雙向通信,但依然需要發(fā)出請求,而且在Comet中,普遍采用了長鏈接,這也會大量消耗服務器帶寬和資源。
所以HTML5定義了 WebSocket 協(xié)議,以及相關的編程API,能更好的實現(xiàn)雙向通信且節(jié)省服務器資源和帶寬。
注意: WebSocket 實際上指的是一種協(xié)議,與我們熟知的 Http 協(xié)議是同等的一個網絡協(xié)議。用網絡模型結構來解釋的話, WebSocket 和 Http 協(xié)議都屬于 應用層協(xié)議,兩者都基于傳輸層協(xié)議 TCP。
WebSocket 協(xié)議
與HTML5的聯(lián)系
Html5是指的一系列新的API,或者說新規(guī)范,新技術。在這個新規(guī)范中定義了一個為了實現(xiàn)雙向實時通信的新協(xié)議 WebSocket,并且提供了一套 JavaScript API 供開發(fā)者來調用實現(xiàn)通信。服務器端的實現(xiàn)由諸如:Tomcat、Jetty等等。
與Http協(xié)議的聯(lián)系
簡單概括來看: WebSocket 不是 Http 協(xié)議, Http 協(xié)議只是被 WebSocket 使用來建立 WebSocket 連接,連接建立了以后客戶端與服務器的雙向通信就與 Http 無關了。
WebSocket 協(xié)議和 HTTP 協(xié)議是兩種不同的東西,它們的聯(lián)系如下:
客戶端開始建立 WebSocket 連接時要發(fā)送一個 header 標記了 Upgrade 的 HTTP 請求,表示請求協(xié)議升級。所以服務器端做出響應的簡便方法是,直接在現(xiàn)有的 HTTP 服務器軟件和現(xiàn)有的端口上實現(xiàn) WebSocket 協(xié)議,重用現(xiàn)有代碼(比如解析和認證這個 HTTP 請求。如果在 TCP 協(xié)議上實現(xiàn),這兩個功能就要重新實現(xiàn)),然后再回一個狀態(tài)碼為 101 的 HTTP 響應完成握手,再往后發(fā)送數(shù)據(jù)時就沒 HTTP 的事了。 **例子** 下面給出發(fā)出建立連接請求時的 request 和 response。 注意:下面的請求報文與響應報文中的內容不是完整的報文,而是 WebSocket 基于 Http 請求(響應)報文添加的內容。 瀏覽器請求
GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: example.com
Origin: null
Sec-WebSocket-Key: sN9cRrP/n9NdMgdcy2VJFQ==
Sec-WebSocket-Version: 13
服務器回應
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: fFBooB7FAkLlXgRSz0BT3v4hq5s=
Sec-WebSocket-Origin: null
Sec-WebSocket-Location: ws://example.com/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/30373.html
摘要:使用約定好的計算握手消息,并使用生產的隨機數(shù)對消息進行加密,最后將之前生成的所有消息發(fā)送給網站。之后所有的通信數(shù)據(jù)將由之前瀏覽器生成的隨機密碼并利用對稱加密算法進行加密。支持四個異步事件。 由于HTTP沒有加密機制,其傳輸?shù)膬热莺苋菀仔孤?,并且HTTP協(xié)議沒法確認通信方,也無法保證接收到的報文在傳輸過程中是否被篡改,因此HTTPS是在HTTP協(xié)議的基礎上提供了加密、認證和完整性保護的功...
摘要:幀是發(fā)送數(shù)據(jù)的基本單位,下邊是它的報文格式報文內容中規(guī)定了數(shù)據(jù)標示操作代碼掩碼數(shù)據(jù)數(shù)據(jù)長度等格式。首先我們明白了客戶端和服務端進行消息傳遞是這樣的客戶端將消息切割成多個幀,并發(fā)送給服務端。服務端接收消息幀,并將關聯(lián)的幀重新組裝成完整的消息。 本文概述 Web Sockets的目標是在一個單獨的持久連接上提供全雙工、雙向通信。在Javascript創(chuàng)建了Web Socket之后,會有一個...
摘要:幀是發(fā)送數(shù)據(jù)的基本單位,下邊是它的報文格式報文內容中規(guī)定了數(shù)據(jù)標示操作代碼掩碼數(shù)據(jù)數(shù)據(jù)長度等格式。首先我們明白了客戶端和服務端進行消息傳遞是這樣的客戶端將消息切割成多個幀,并發(fā)送給服務端。服務端接收消息幀,并將關聯(lián)的幀重新組裝成完整的消息。 本文概述 Web Sockets的目標是在一個單獨的持久連接上提供全雙工、雙向通信。在Javascript創(chuàng)建了Web Socket之后,會有一個...
閱讀 3216·2021-11-15 18:14
閱讀 1850·2021-09-22 10:51
閱讀 3362·2021-09-09 09:34
閱讀 3580·2021-09-06 15:02
閱讀 1119·2021-09-01 11:40
閱讀 3249·2019-08-30 13:58
閱讀 2580·2019-08-30 11:04
閱讀 1150·2019-08-28 18:31