国产精品一区在线观看你懂的,三级电影网站免费观看,日韩黄色网,大黄网站在线观看

當前位置: 首頁 >應用方案 >技術應用 >

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

一、websocket起源

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

HTTP協(xié)議簡介

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

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

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

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

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

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

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

  5. 關閉連接:在完成請求-響應周期后,客戶端和服務器之間的連接可以被關閉

建立WebSocket連接

HTTP應用場景

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

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


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

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

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


二、Websocket通訊過程簡介

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

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

1 Websocket

包含關鍵的header:

* Connection: Upgrade

* Upgrade: websocket

* Sec-WebSocket-Key: afmbhhBRQuwCLmnWDRWHxw==

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

2. 服務器握手相應

2 Websocket


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

3. Websocket通訊過程

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

3 Websocket


4. 關閉連接

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

更多關于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ā)展,提升資源利用率,更多產品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網進行了解,也可以直接撥打400電話咨詢技術專員!



點擊撥打: 億佰特官網 4000-330-990