国产熟睡乱子伦视频_激情五月综网站点_中文字幕乱偷无码_国产日韩综合第一页_在线观看亚色视频区一区二_八戒八戒神马影院免费_国产av黄色电影_4hu四虎永久在线影院97年小娇妻_台湾佬自偷自拍情侣在线_秋霞成人永久免费网站

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

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

一、websocket起源

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

HTTP協(xié)議簡介

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

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

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

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

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

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

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

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

建立WebSocket連接

HTTP應(yīng)用場景

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

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


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

* 連接后除非使用代碼或者手動斷開,否則不斷開;

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


二、Websocket通訊過程簡介

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

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

1 Websocket

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

* Connection: Upgrade

* Upgrade: websocket

* Sec-WebSocket-Key: afmbhhBRQuwCLmnWDRWHxw==

其中Connection: Upgrade”,“Upgrade: websocket”兩個字段代表協(xié)議升級為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通訊過程

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

3 Websocket


4. 關(guān)閉連接

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

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

“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)化、智能化、自動化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進(jìn)行了解,也可以直接撥打400電話咨詢技術(shù)專員!



4000-330-990

https://www.wjx.cn/jq/84863372.aspx