回覆列表
  • 1 # 玉衡指孟

      MQTT(Message Queuing Telemetry Transport,訊息佇列遙測傳輸)是輕量級基於代理的釋出/訂閱的訊息傳輸協議,設計思想是開放、簡單、輕量、易於實現。這些特點使它適用於受限環境。例如:  ①網路代價昂貴,頻寬低、不可靠。  ②在嵌入裝置中執行,處理器和記憶體資源有限。  該協議的特點有:  ①使用釋出/訂閱訊息模式,提供一對多的訊息釋出,解除應用程式耦合。  ②對負載內容遮蔽的訊息傳輸。  ③使用 TCP/IP 提供網路連線。  ④有三種訊息釋出服務質量:  ⑤"至多一次",訊息釋出完全依賴底層 TCP/IP 網路。會發生訊息丟失或重複。這一級別可用於如下情況,環境感測器資料,丟失一次讀記錄無所謂,因為不久後還會有第二次傳送。  ⑥"至少一次",確保訊息到達,但訊息重複可能會發生。  ⑦"只有一次",確保訊息到達一次。這一級別可用於如下情況,在計費系統中,訊息重複或丟失會導致不正確的結果。  ⑧小型傳輸,開銷很小(固定長度的頭部是 2 位元組),協議交換最小化,以降低網路流量。  ⑨使用 Last Will 和 Testament 特性通知有關各方客戶端異常中斷的機制。  WebSocket則提供使用一個TCP連線進行雙向通訊的機制,包括網路協議和API,以取代網頁和伺服器採用HTTP輪詢進行雙向通訊的機制。  本質上來說,WebSocket是不限於HTTP協議的,但是由於現存大量的HTTP基礎設施,代理,過濾,身份認證等等,WebSocket借用HTTP和HTTPS的埠。由於使用HTTP的埠,因此TCP連線建立後的握手訊息是基於HTTP的,由伺服器判斷這是一個HTTP協議,還是WebSocket協議。 WebSocket連線除了建立和關閉時的握手,資料傳輸和HTTP沒丁點關係了。  由此可知兩者的應用場景不一樣:  MQTT是為了物聯網場景設計的基於TCP的Pub/Sub協議,有許多為物聯網最佳化的特性,比如適應不同網路的QoS、層級主題、遺言等等。  WebSocket是為了HTML5應用方便與伺服器雙向通訊而設計的協議,HTTP握手然後轉TCP協議,用於取代之前的Server Push、Comet、長輪詢等老舊實現。  兩者之所有有交集,是因為一個應用場景:如何透過HTML5應用來作為MQTT的客戶端,以便接受裝置訊息或者向裝置傳送資訊,那麼MQTT over WebSocket自然成了最合理的途徑了。

  • 中秋節和大豐收的關聯?
  • 四邊形性質和判定?