好爽又高潮了毛片免费下载,国产97在线 | 亚洲,亚洲一区二区三区AV无码,特级AAAAAAAAA毛片免费视频

移動端

為什么客戶不直接控制智能家居網關 而要使用云服務器做中轉?

2020年09月07日 15:18$artinfo.Reprint點擊量:6487

  在通常的智能家居場景中,我們可以很方便地從口袋中掏出手機,打開APP應用,點擊幾下,啟動家里的熱水器,這樣下班回家后,馬上就可以洗個熱水澡。
 

 
       在這點擊的零點幾秒的時間內,Internet網上的控制報文是如下傳輸的。
 
 ?、倏蛻羰謾C連接到云服務器發出熱水器的控制指令
 
 ?、谠品掌靼芽刂浦噶钷D發給家中智能家居網關,控制熱水器開關
 
 ?、蹮崴黜憫刂浦噶?,將結果反饋給云服務器
 
 ?、茉品掌髟賹⒔Y果反饋給客戶APP,APP顯示設置成功
 
  大家可能會問一個問題,為什么客戶APP不直接控制智能家居網關,而使用云服務器做中轉?
 
  答案:智能家居設備是躲在家用路由器的后面,它的ip地址并不是公網地址,因此用戶手機是無法訪問到智能家居設備。同理,云服務器也無法訪問到智能家居設備。
 
  因此智能家居設備需要主動向云服務器發起連接,并建立好連接。這樣客戶APP就可以就隨時登錄到云端,通過云端對智能家居進行控制。
 
  我們拿在internet世界常用的HTTP協議來實現智能家居網關和云服務器的交互控制。HTTP協議非常簡單,客戶端發起一個request,服務器回一個response。
 
  大家注意,服務器是不能主動發起請求的,這是因為HTTP協議必須是客戶端發起的。因此如果要控制智能家居設備,智能家居設備需要不停的向服務器發起詢問,查看云服務器是否對它下控制命令。
 
  設備不停地對服務器請求會造成以下問題:
 
  1、無論設備還是云服務器,CPU很忙,設備性能下降
 
  2、占用帶寬,特別是云服務器的帶寬資源是比較昂貴的
 
  好,我們現在請出WebSocket協議來替換HTTP協議的實現,設備和服務器的請求變成下面的對話:
 
  這樣就明顯合理多了,因此WebSocket協議有如下幾個優點:
 
  1、更小的控制開銷。建立連接后,用于協議控制的數據包頭部相對較小,在不擴展的情況下,只有2-10個字節。相對于HTTP請求每次都要帶完整的頭部,開銷要小很多
 
  2、更強的實時性,協議是雙工的??蛻舳撕头掌鞫硕伎梢噪S時發起請求。
 
  正因為WebSocket有這些優點,它當前被大量使用在如下領域:
 
  1、社交聊天,如果WebSocket早一些出來,QQ和微*聊天的協議估計就是它了
  2、彈幕
  3、多玩家游戲
  4、協同編輯,比如Google Docs,允許多人在線同時編輯相同一篇文檔
  5、股票基金報價
  6、基于位置的應用
  7、智能家居
 
  可以看出來,需要實時性的場景都會使用WebSocket。
 
  WebSocket vs HTTP
 
  下圖是WebSocket和HTTP協議層次模型:
 
  為什么客戶不直接控制智能家居網關,而要使用云服務器做中轉?
 
  從圖上可以看出,HTTP和WebSocket有一些交集,我們通過下面一個典型的WebSocket握手請求來展示:
 
  客戶端請求
  GET/webfin/websocket/ HTTP/1.1Host: localhostUpgrade: websocket
  Connection:UpgradeSec-WebSocket-Key: xqBt3ImNzJbYqRINxEFlkg==Origin: http://服務器地址Sec-WebSocket-Version: 13
 
  服務器回應
 
  HTTP/1.1101 Switching ProtocolsUpgrade: websocketConnecTIon: UpgradeSec-WebSocket-Accept: K7DJLdLooIwIG/MOpvWFB3y3FE8=
  可以看出來,WebSocket建立連接是使用HTTP協議進行握手的,握手完成之后,WebSocket就和HTTP沒有關系了,真正的數據傳輸階段是不需要http協議參與的。
 
  WebSocket和HTTP是獨立的協議,那么為什么WebSocket協議借用了HTTP的協議來建立連接而不是自建一套獨立的協議呢?
 
  在前幾年的時候,在大多數公司里,IT為了讓大家安心工作,在公司的防火墻上把QQ的端口號封了,這樣既解決了大家可以正常上網,但不能上網QQ聊天。如果QQ改用WebSocket來實現,WebSocket使用和HTTP相同的80端口,IT就沒法限制了,除非把Web瀏覽也禁掉。因此WebSocket協議借用了HTTP的協議來建立連接,使用HTTP的端口號,可以繞過大多數防火墻的限制。有Web的地方,WebSocket就可以通行無阻。
 
  瀏覽器的兼容性
 
  由于WebSocket協議是在2011年終定稿,因此一些舊款的瀏覽器還無法支持WebSocket,比如IE10以前的版本。下面是實現了WebSocket的瀏覽器(終版本RFC6455):
 
  Web世界日新月異,但IE的對新技術的支持總要慢一拍,所以現在IE的份額也在逐年下降。來自Net Market Share 2016年7月份的統計,Google的Chrome瀏覽器(48.65%)已經超越 IE(31.65%)的*。這里提醒,還在用IE老版本的朋友們,趕快升級吧。
 
  WebSocket之前
 
  大家可能會有疑問,2011年WebSocket才終定稿,那么之前如何實現像聊天室之類的實時應用呢?答案是:使用tcp編程。所以像QQ這樣的聊天程序,騰訊需要自己開發私有的SDK來實現。如果今天開發QQ聊天程序,直接拿WebSocket來用就好了,瀏覽器、客戶端程序、服務器程序、各種編程語言都已經開發了現成的WebSocket庫函數,可以直接調用。底層的通信協議和實現細節不用再考慮了。
 
  HTTP和WebSocket的編程對應于OSI七層協議中的第七層,而tcp編程在第三層。從編程角度來說,層次越高,編碼越簡單。原理類似于,程序員用c語言編程還是python編程一樣,python寫幾句話,c可能需要寫幾頁的程序。
 
  總結:在web開發之前是沒有保持長鏈接的協議,WebSocket的誕生使其從無到有,全雙工、實時、高效,WebSocket迎合了實時通訊的需求。
版權與免責聲明: 凡本網注明“來源:智慧城市網”的所有作品,均為浙江興旺寶明通網絡有限公司-智慧城市網合法擁有版權或有權使用的作品,未經本網授權不得轉載、摘編或利用其它方式使用上述作品。已經本網授權使用作品的,應在授權范圍內使用,并注明“來源:智慧城市網www.cmr6829.com”。違反上述聲明者,本網將追究其相關法律責任。

本網轉載并注明自其它來源(非智慧城市網www.cmr6829.com)的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或和對其真實性負責,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品第一來源,并自負版權等法律責任。

編輯精選

更多

本站精選

更多

專題推薦

更多

名企推薦

更多

浙公網安備 33010602000006號