久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7630|回復: 2
打印 上一主題 下一主題
收起左側

MQTT協議介紹之三:發送和接收消息

[復制鏈接]
跳轉到指定樓層
樓主
在機智云的整個架構里面,如上圖,GAgent實現了從模塊到云端的數據交互,其實GAgent里面就是用MQTT協議實現的,可見MQTT協議的重要性。今天詳細介紹MQTT的發送和接收消息。

在這一章中,我們將集中講解MQTT的發布、訂閱和取消訂閱的相關問題。本節講的是關于發布/訂閱基礎的,這篇文章將重點講解在MQTT協議中發布和訂閱的具體細節。如果您沒有閱讀第二章,關于發布/訂閱模式基本知識的,我們強烈建議您先閱讀。

上一節我們研究了建立MQTT客戶端和代理之間的連接,所以本周我們將討論發送和接收消息。
發布
MQTT客戶端連接到代理后,可以發布消息。代理發送的消息主題進行過濾。所以每個消息都必須包含一個主題,由代理將使用該主題將消息轉發給感興趣的客戶端。每個消息通常具有包含以字節格式傳輸的實際數據的有效載荷。MQTT與數據無關,完全取決于有效負載的結構使用情況。如果要發送二進制數據,文本數據,甚至是完整的XML或JSON,則完全由發送人來決定。MQTT發布消息還有一些很多的屬性,我們將在下面詳細討論: Topic Name(主題名稱)

一個簡單的字符串,其分層結構以正斜杠為分隔符。舉一個例子如:“myhome / livingroom / temperature”或“Germany / Munich / Octoberfest / people”。有關主題的更多詳細信息,請參考后面的文章。
  • QoS(服務質量)

一個消息的服務質量水平,級別有0、1、2,是確定到達另一端(客戶端或代理)的消息的保證。關于更多關于QoS的內容,我們將在后面做詳細的介紹。
  • Retain-Flag(保持標志)

該標志確定代理是否持久保存某個特定主題的消息。訂閱該主題的新客戶端將在訂閱后立即收到該主題的最后保留消息。在接下來的文章中將討論有關消息保持的更多內容以及最佳實踐。
  • Payload(有效負荷)

這是消息的實際內容。MQTT完全與數據無關的,可以對數據進行任何編碼,加密數據和二進制的數據。
  • Packet Identifier(包標識符)

包標識符是客戶端和代理之間的唯一標識符,用于標識消息流中的消息。這僅適用于QoS1和QoS2。設置這個MQTT內部標識符是客戶端庫或代理的事情。
  • DUP flag(重復標志)

重復標志表示該消息是重復的,并且被重新發送,因為另一端沒有確認原始消息。這僅與QoS1和QoS2相關,更多細節在后面介紹,這與QoS級別有關。他的重新發送/重復機制通常由MQTT客戶端庫或代理程序作為實現細節處理。 最初發布消息的客戶端只關心將發布的消息傳遞給代理。從那里,代理有責任將消息傳遞給相應的訂閱者。發布客戶端沒有得到任何反饋,如果有人對此發布的消息感興趣,也可以有多個客戶端接收到該代理的消息,接收到該消息的也可以是發布客戶端本身,因為發布和訂閱不是沖突的。
訂閱
如果沒有人收到消息,發布消息是沒有意義的,換句話說,如果沒有客戶端訂閱任何主題,客戶端需要向MQTT代理服務器發送訂閱消息,以便收到相關消息。訂閱消息很簡單,它只包含唯一的數據包標識符和訂閱列表。 Packet Identifier(包標識符)

包標識符是客戶端和代理之間的唯一標識符,用于標識消息流中的消息。這僅適用于QoS1和QoS2。設置這個MQTT內部標識符是客戶端庫或代理的事情。
  • List of Subscriptions(訂閱列表)

訂閱消息可以包含客戶端的任意數量的訂閱。每個訂閱由一對主題和QoS級別組成。訂閱消息中的主題還可以包含通配符,這使得可以訂閱某些主題模式。如果一個客戶端有重疊訂閱,該主題的最高QoS級別將獲勝,并由代理用于傳遞該消息。
  • Suback(訂閱應答)

每個訂閱將由代理通過以訂閱應答消息的形式向客戶端發送確認來確認信息 。此消息包含與原始訂閱消息相同的數據包標識符(以便標識消息)和返回碼列表。 Packet Identifier(包標識符)

分組標識符是用于標識消息的唯一標識符。它與訂閱消息中相同。
  • Return Code(返回碼)

代理為訂閱消息中接收到的每個主題/ QoS進行返回一個返回碼。因此,如果訂閱消息有5個訂閱,將有5個返回碼,以確認代理服務器授權的具有QoS級別的每個主題。如果訂閱被代理禁止(例如,如果客戶端不允許訂閱此主題,由于權限不足或該主題有問題),代理將向指定主題響應失敗返回代碼。
在客戶端成功發送訂閱消息并收到訂閱應答消息后,它將收到與訂閱主題相匹配的發布消息
取消訂閱
訂閱消息相對應的是取消訂閱消息,它刪除代理上的客戶端的現有訂閱。取消訂閱消息類似于訂閱消息,并且還具有包標識符和主題列表。Packet Identifier(包標識符)

分組標識符是用于標識消息的唯一標識符。它與訂閱消息中相同。
  • List of Topic(主題列表)

主題列表包含任意數量的主題,客戶端執行取消訂閱。只需要將主題作為字符串發送(不帶QoS),該主題將取消訂閱,而不管最初訂閱的QoS級別如何。
  • 取消訂閱應答

代理將確認取消訂閱消息的請求。該消息僅包含包標識符。Packet Identifier(包標識符)

分組標識符是用于標識消息的唯一標識符。它與訂閱消息中相同。從代理接收到取消訂閱消息后,就認為該取消訂閱消息中的訂閱消息已經被刪除。

這就是我們的MQTT 要點系列的第三部分的結尾。我們希望你喜歡在下一篇文章中,我們將深入了解MQTT主題的使用。我們將解釋通配符的基本知識以及使用情況以及更多實際的例子。
學習總結
  • 在這里先聲明下,我做的不僅僅是翻譯文章,而是在深入理解MQTT協議,希望能和大家共同探討,挖掘其精華。
  • 本章中涉及到發布、訂閱和去取消訂閱中的很多參數信息,我建議先看完,有個大體了解,一定要實踐,在寫代碼應用的時候深入體會,用到那個就去詳細理解消化。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:259867 發表于 2017-12-10 19:31 | 只看該作者
很好,學習了
回復

使用道具 舉報

板凳
ID:307051 發表于 2018-5-2 07:57 | 只看該作者
感謝!想學但資質不足有聽沒有懂
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日日夜夜精品免费视频 | 最新中文字幕在线 | 欧美一区二区三区在线播放 | 国产婷婷在线视频 | 日韩精品一区二区三区视频播放 | 国产欧美日韩综合精品一区二区 | 久久久网| 久久伊人精品 | 欧美一级片在线看 | 亚洲欧美日韩精品 | 久久精品亚洲欧美日韩精品中文字幕 | 色资源在线 | 一区二区三区av夏目彩春 | 琪琪午夜伦伦电影福利片 | 国产在线视频三区 | 日韩在线一区二区三区 | 狠狠涩| 国产精品a久久久久 | 国产精品不卡一区 | 欧美一级欧美一级在线播放 | 日韩欧美中文在线 | 国产成人免费 | 成人免费一区二区 | 久久久国产一区二区 | 91麻豆精品国产91久久久久久 | 91伦理片| 欧美小视频在线观看 | 日韩精品一区二区三区中文字幕 | 黄色国产大片 | 九九免费在线视频 | 在线观看国产 | 亚洲性视频 | 午夜男人免费视频 | 久久久入口 | 国产一区二区在线免费观看 | 在线国产一区 | 美女黄视频网站 | 国产成人在线视频免费观看 | 成人三级在线播放 | 国产精品国产成人国产三级 | 超碰欧美 |