18禁免费观看完整版高清-毛片重口味女人的逼-99精品毛片免费播放高潮-2020年国产新视频

當(dāng)前位置: 首頁(yè) >應(yīng)用方案 >技術(shù)應(yīng)用 >

Websocket協(xié)議基礎(chǔ)以及Websocket通訊過(guò)程詳解

一、websocket起源

大家日常生活中在使用網(wǎng)頁(yè)瀏覽器玩小游戲時(shí)不知道有沒(méi)有想過(guò)為什么網(wǎng)頁(yè)游戲可以實(shí)時(shí)的跟服務(wù)器通訊,搞技術(shù)的小伙伴應(yīng)該聽(tīng)說(shuō)過(guò)websocket協(xié)議,講websocket協(xié)議之前需要先講HTTP協(xié)議。

HTTP協(xié)議簡(jiǎn)介

http協(xié)議全稱超文本傳輸協(xié)議,常見(jiàn)的就是瀏覽器瀏覽網(wǎng)頁(yè)(瀏覽器和網(wǎng)頁(yè)服務(wù)器通訊),http協(xié)議具備以下基本特性:

短鏈接:客戶端(瀏覽器)向服務(wù)器發(fā)起一次連接請(qǐng)求,服務(wù)器解析后給出回執(zhí)報(bào)文,交互完成后,客戶端或者服務(wù)器主動(dòng)斷開(kāi)連接

應(yīng)用層協(xié)議:所有的數(shù)據(jù)傳輸過(guò)程由客戶端發(fā)起,服務(wù)端不主動(dòng)發(fā)數(shù)據(jù),有如下過(guò)程;

  1. 建立連接:客戶端與服務(wù)器之間建立連接。。

  2. 發(fā)送請(qǐng)求:客戶端向服務(wù)器發(fā)送請(qǐng)求。

  3. 處理請(qǐng)求:服務(wù)器接收到請(qǐng)求后,根據(jù)請(qǐng)求中的信息找到相應(yīng)的資源,執(zhí)行相應(yīng)的處理操作。

  4. 發(fā)送響應(yīng):服務(wù)器將處理后的結(jié)果封裝在響應(yīng)中,并將其發(fā)送回客戶端。

  5. 關(guān)閉連接:在完成請(qǐng)求-響應(yīng)周期后,客戶端和服務(wù)器之間的連接可以被關(guān)閉

建立WebSocket連接

HTTP應(yīng)用場(chǎng)景

可見(jiàn),在HTTP中如果想持續(xù)的從服務(wù)器獲取數(shù)據(jù),必須要持續(xù)的發(fā)起請(qǐng)求,比如以下物聯(lián)網(wǎng)應(yīng)用場(chǎng)景案例:

某一智能家居系統(tǒng)的用于數(shù)據(jù)采集的中樞網(wǎng)關(guān)配備了一個(gè)網(wǎng)頁(yè)監(jiān)控界面,遠(yuǎn)程登錄可以訪問(wèn)家中的家居設(shè)備,某次,當(dāng)你遠(yuǎn)程登錄界面后,想要開(kāi)啟空氣凈化器,并持續(xù)觀察家中的PM2.5指數(shù),由于進(jìn)化過(guò)程時(shí)間比較長(zhǎng),超過(guò)1h,要想實(shí)時(shí)監(jiān)測(cè),如果按照正常http協(xié)議的交互邏輯,可以使用定時(shí)請(qǐng)求(輪詢)的方式,可以獲取數(shù)據(jù),但是,如果此時(shí)你家還有其他人想要查看,如果你的家人有100個(gè),此時(shí),中樞網(wǎng)關(guān)服務(wù)器多半得喊救命,因?yàn)檫^(guò)多得“連接-請(qǐng)求-回復(fù)-斷開(kāi)”過(guò)程需要服務(wù)器不停得申請(qǐng)和釋放空間,不停得建立soket鏈接,導(dǎo)致服務(wù)器大量時(shí)間被請(qǐng)求占用,瞬間提高服務(wù)器壓力,為了解決此問(wèn)題,有了websocket協(xié)議。


Websocket協(xié)議的簡(jiǎn)單理解就是在HTTP超文本傳輸協(xié)議鏈接的基礎(chǔ)上,實(shí)現(xiàn)以下兩點(diǎn):

* 連接后除非使用代碼或者手動(dòng)斷開(kāi),否則不斷開(kāi);

* 服務(wù)器可以主動(dòng)下發(fā)消息,無(wú)需客戶端再次請(qǐng)求;


二、Websocket通訊過(guò)程簡(jiǎn)介

Websocket協(xié)議通訊過(guò)程有以下幾個(gè)階段

1. 建立連接(握手),使用HTTP請(qǐng)求,

1 Websocket

包含關(guān)鍵的header:

* Connection: Upgrade

* Upgrade: websocket

* Sec-WebSocket-Key: afmbhhBRQuwCLmnWDRWHxw==

其中Connection: Upgrade”,“Upgrade: websocket”兩個(gè)字段代表協(xié)議升級(jí)為wensocket,“Sec-WebSocket-Key: afmbhhBRQuwCLmnWDRWHxw==”類似登錄碼,用于客戶端和服務(wù)器的連接驗(yàn)證

2. 服務(wù)器握手相應(yīng)

2 Websocket


握手相應(yīng)中最重要的部分就是:Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=”此值根據(jù)Sec-WebSocket-Key“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”拼接后按照SHA1編碼,將結(jié)果再進(jìn)行BASE64編碼便可以得到“Sec-WebSocket-Accept

3. Websocket通訊過(guò)程

(1) 此過(guò)程可以參考“https://developer.mozilla.org/zh-CN/docs/Web/API/WebSockets_API/Writing_WebSocket_servers”,此處不過(guò)多贅述,僅需要注意下圖websocket數(shù)據(jù)幀格式。

3 Websocket


4. 關(guān)閉連接

(1) websocket中有一個(gè)單獨(dú)的位“FIN”標(biāo)記斷開(kāi)連接,任何一方均可斷開(kāi)連接

更多關(guān)于websocket的知識(shí)可以參考以下鏈接

“https://blog.csdn.net/weixin_34124577/article/details/88039918”

“https://developer.mozilla.org/zh-CN/docs/Web/API/WebSockets_API/Writing_WebSocket_servers”

https://blog.csdn.net/weixin_44772566/article/details/136717134


今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進(jìn)行了解,也可以直接撥打400電話咨詢技術(shù)專員!



點(diǎn)擊撥打: 億佰特官網(wǎng) 4000-330-990