成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

websocket 原理

asoren / 1630人閱讀

摘要:注意實(shí)際上指的是一種協(xié)議,與我們熟知的協(xié)議是同等的一個(gè)網(wǎng)絡(luò)協(xié)議。協(xié)議與的聯(lián)系是指的一系列新的,或者說新規(guī)范,新技術(shù)。注意下面的請求報(bào)文與響應(yīng)報(bào)文中的內(nèi)容不是完整的報(bào)文,而是基于請求響應(yīng)報(bào)文添加的內(nèi)容。

背景

以前的網(wǎng)站為了實(shí)現(xiàn)推送功能,使用的方法都是輪詢。所謂的輪詢就是在特定的時(shí)間間隔(例如1秒),由瀏覽器向服務(wù)器發(fā)出一個(gè) Http request,然后服務(wù)器返回最新的數(shù)據(jù)給客戶端瀏覽器,從而給出一種服務(wù)端實(shí)時(shí)推送的假象。由于Http Request的Header(請求頭)很長,而傳輸?shù)臄?shù)據(jù)可能很短就只占一點(diǎn)點(diǎn),每次請求消耗的帶寬大部分都消耗在 Header上。從網(wǎng)上資料得知后來還有改進(jìn)的輪詢方法叫做 Comet,使用 Ajax。但這種技術(shù)雖然可達(dá)到雙向通信,但依然需要發(fā)出請求,而且在Comet中,普遍采用了長鏈接,這也會(huì)大量消耗服務(wù)器帶寬和資源。

所以HTML5定義了 WebSocket 協(xié)議,以及相關(guān)的編程API,能更好的實(shí)現(xiàn)雙向通信且節(jié)省服務(wù)器資源和帶寬。

注意: WebSocket 實(shí)際上指的是一種協(xié)議,與我們熟知的 Http 協(xié)議是同等的一個(gè)網(wǎng)絡(luò)協(xié)議。用網(wǎng)絡(luò)模型結(jié)構(gòu)來解釋的話, WebSocket 和 Http 協(xié)議都屬于 應(yīng)用層協(xié)議,兩者都基于傳輸層協(xié)議 TCP。

WebSocket 協(xié)議

與HTML5的聯(lián)系
Html5是指的一系列新的API,或者說新規(guī)范,新技術(shù)。在這個(gè)新規(guī)范中定義了一個(gè)為了實(shí)現(xiàn)雙向?qū)崟r(shí)通信的新協(xié)議 WebSocket,并且提供了一套 JavaScript API 供開發(fā)者來調(diào)用實(shí)現(xiàn)通信。服務(wù)器端的實(shí)現(xiàn)由諸如:Tomcat、Jetty等等。

與Http協(xié)議的聯(lián)系
簡單概括來看: WebSocket 不是 Http 協(xié)議, Http 協(xié)議只是被 WebSocket 使用來建立 WebSocket 連接,連接建立了以后客戶端與服務(wù)器的雙向通信就與 Http 無關(guān)了。

WebSocket 協(xié)議和 HTTP 協(xié)議是兩種不同的東西,它們的聯(lián)系如下:

客戶端開始建立 WebSocket 連接時(shí)要發(fā)送一個(gè) header 標(biāo)記了 Upgrade 的 HTTP 請求,表示請求協(xié)議升級。所以服務(wù)器端做出響應(yīng)的簡便方法是,直接在現(xiàn)有的 HTTP 服務(wù)器軟件和現(xiàn)有的端口上實(shí)現(xiàn) WebSocket 協(xié)議,重用現(xiàn)有代碼(比如解析和認(rèn)證這個(gè) HTTP 請求。如果在 TCP 協(xié)議上實(shí)現(xiàn),這兩個(gè)功能就要重新實(shí)現(xiàn)),然后再回一個(gè)狀態(tài)碼為 101 的 HTTP 響應(yīng)完成握手,再往后發(fā)送數(shù)據(jù)時(shí)就沒 HTTP 的事了。

**例子**
下面給出發(fā)出建立連接請求時(shí)的 request 和 response。

注意:下面的請求報(bào)文與響應(yīng)報(bào)文中的內(nèi)容不是完整的報(bào)文,而是 WebSocket 基于 Http 請求(響應(yīng))報(bào)文添加的內(nèi)容。

瀏覽器請求

GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: example.com
Origin: null
Sec-WebSocket-Key: sN9cRrP/n9NdMgdcy2VJFQ==
Sec-WebSocket-Version: 13

服務(wù)器回應(yīng)

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: fFBooB7FAkLlXgRSz0BT3v4hq5s=
Sec-WebSocket-Origin: null
Sec-WebSocket-Location: ws://example.com/

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/30373.html

相關(guān)文章

  • 【HTTP基礎(chǔ)】HTTPS原理WebSocket原理

    摘要:使用約定好的計(jì)算握手消息,并使用生產(chǎn)的隨機(jī)數(shù)對消息進(jìn)行加密,最后將之前生成的所有消息發(fā)送給網(wǎng)站。之后所有的通信數(shù)據(jù)將由之前瀏覽器生成的隨機(jī)密碼并利用對稱加密算法進(jìn)行加密。支持四個(gè)異步事件。 由于HTTP沒有加密機(jī)制,其傳輸?shù)膬?nèi)容很容易泄漏,并且HTTP協(xié)議沒法確認(rèn)通信方,也無法保證接收到的報(bào)文在傳輸過程中是否被篡改,因此HTTPS是在HTTP協(xié)議的基礎(chǔ)上提供了加密、認(rèn)證和完整性保護(hù)的功...

    fyber 評論0 收藏0
  • webSocket原理探索

    摘要:幀是發(fā)送數(shù)據(jù)的基本單位,下邊是它的報(bào)文格式報(bào)文內(nèi)容中規(guī)定了數(shù)據(jù)標(biāo)示操作代碼掩碼數(shù)據(jù)數(shù)據(jù)長度等格式。首先我們明白了客戶端和服務(wù)端進(jìn)行消息傳遞是這樣的客戶端將消息切割成多個(gè)幀,并發(fā)送給服務(wù)端。服務(wù)端接收消息幀,并將關(guān)聯(lián)的幀重新組裝成完整的消息。 本文概述 Web Sockets的目標(biāo)是在一個(gè)單獨(dú)的持久連接上提供全雙工、雙向通信。在Javascript創(chuàng)建了Web Socket之后,會(huì)有一個(gè)...

    baukh789 評論0 收藏0
  • webSocket原理探索

    摘要:幀是發(fā)送數(shù)據(jù)的基本單位,下邊是它的報(bào)文格式報(bào)文內(nèi)容中規(guī)定了數(shù)據(jù)標(biāo)示操作代碼掩碼數(shù)據(jù)數(shù)據(jù)長度等格式。首先我們明白了客戶端和服務(wù)端進(jìn)行消息傳遞是這樣的客戶端將消息切割成多個(gè)幀,并發(fā)送給服務(wù)端。服務(wù)端接收消息幀,并將關(guān)聯(lián)的幀重新組裝成完整的消息。 本文概述 Web Sockets的目標(biāo)是在一個(gè)單獨(dú)的持久連接上提供全雙工、雙向通信。在Javascript創(chuàng)建了Web Socket之后,會(huì)有一個(gè)...

    WelliJhon 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<