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