亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: MQTT協(xié)議介紹之三:發(fā)送和接收消息 [打印本頁]

作者: z3512641347    時間: 2017-8-25 08:54
標題: MQTT協(xié)議介紹之三:發(fā)送和接收消息
在機智云的整個架構里面,如上圖,GAgent實現(xiàn)了從模塊到云端的數(shù)據(jù)交互,其實GAgent里面就是用MQTT協(xié)議實現(xiàn)的,可見MQTT協(xié)議的重要性。今天詳細介紹MQTT的發(fā)送和接收消息。

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

上一節(jié)我們研究了建立MQTT客戶端和代理之間的連接,所以本周我們將討論發(fā)送和接收消息。
發(fā)布
MQTT客戶端連接到代理后,可以發(fā)布消息。代理發(fā)送的消息主題進行過濾。所以每個消息都必須包含一個主題,由代理將使用該主題將消息轉發(fā)給感興趣的客戶端。每個消息通常具有包含以字節(jié)格式傳輸?shù)膶嶋H數(shù)據(jù)的有效載荷。MQTT與數(shù)據(jù)無關,完全取決于有效負載的結構使用情況。如果要發(fā)送二進制數(shù)據(jù),文本數(shù)據(jù),甚至是完整的XML或JSON,則完全由發(fā)送人來決定。MQTT發(fā)布消息還有一些很多的屬性,我們將在下面詳細討論: Topic Name(主題名稱)
一個簡單的字符串,其分層結構以正斜杠為分隔符。舉一個例子如:“myhome / livingroom / temperature”或“Germany / Munich / Octoberfest / people”。有關主題的更多詳細信息,請參考后面的文章。
一個消息的服務質量水平,級別有0、1、2,是確定到達另一端(客戶端或代理)的消息的保證。關于更多關于QoS的內容,我們將在后面做詳細的介紹。
該標志確定代理是否持久保存某個特定主題的消息。訂閱該主題的新客戶端將在訂閱后立即收到該主題的最后保留消息。在接下來的文章中將討論有關消息保持的更多內容以及最佳實踐。
這是消息的實際內容。MQTT完全與數(shù)據(jù)無關的,可以對數(shù)據(jù)進行任何編碼,加密數(shù)據(jù)和二進制的數(shù)據(jù)。
包標識符是客戶端和代理之間的唯一標識符,用于標識消息流中的消息。這僅適用于QoS1和QoS2。設置這個MQTT內部標識符是客戶端庫或代理的事情。
重復標志表示該消息是重復的,并且被重新發(fā)送,因為另一端沒有確認原始消息。這僅與QoS1和QoS2相關,更多細節(jié)在后面介紹,這與QoS級別有關。他的重新發(fā)送/重復機制通常由MQTT客戶端庫或代理程序作為實現(xiàn)細節(jié)處理。 最初發(fā)布消息的客戶端只關心將發(fā)布的消息傳遞給代理。從那里,代理有責任將消息傳遞給相應的訂閱者。發(fā)布客戶端沒有得到任何反饋,如果有人對此發(fā)布的消息感興趣,也可以有多個客戶端接收到該代理的消息,接收到該消息的也可以是發(fā)布客戶端本身,因為發(fā)布和訂閱不是沖突的。
訂閱
如果沒有人收到消息,發(fā)布消息是沒有意義的,換句話說,如果沒有客戶端訂閱任何主題,客戶端需要向MQTT代理服務器發(fā)送訂閱消息,以便收到相關消息。訂閱消息很簡單,它只包含唯一的數(shù)據(jù)包標識符和訂閱列表。 Packet Identifier(包標識符)
包標識符是客戶端和代理之間的唯一標識符,用于標識消息流中的消息。這僅適用于QoS1和QoS2。設置這個MQTT內部標識符是客戶端庫或代理的事情。
訂閱消息可以包含客戶端的任意數(shù)量的訂閱。每個訂閱由一對主題和QoS級別組成。訂閱消息中的主題還可以包含通配符,這使得可以訂閱某些主題模式。如果一個客戶端有重疊訂閱,該主題的最高QoS級別將獲勝,并由代理用于傳遞該消息。
每個訂閱將由代理通過以訂閱應答消息的形式向客戶端發(fā)送確認來確認信息 。此消息包含與原始訂閱消息相同的數(shù)據(jù)包標識符(以便標識消息)和返回碼列表。 Packet Identifier(包標識符)
分組標識符是用于標識消息的唯一標識符。它與訂閱消息中相同。
代理為訂閱消息中接收到的每個主題/ QoS進行返回一個返回碼。因此,如果訂閱消息有5個訂閱,將有5個返回碼,以確認代理服務器授權的具有QoS級別的每個主題。如果訂閱被代理禁止(例如,如果客戶端不允許訂閱此主題,由于權限不足或該主題有問題),代理將向指定主題響應失敗返回代碼。
在客戶端成功發(fā)送訂閱消息并收到訂閱應答消息后,它將收到與訂閱主題相匹配的發(fā)布消息
取消訂閱
訂閱消息相對應的是取消訂閱消息,它刪除代理上的客戶端的現(xiàn)有訂閱。取消訂閱消息類似于訂閱消息,并且還具有包標識符和主題列表。Packet Identifier(包標識符)
分組標識符是用于標識消息的唯一標識符。它與訂閱消息中相同。
主題列表包含任意數(shù)量的主題,客戶端執(zhí)行取消訂閱。只需要將主題作為字符串發(fā)送(不帶QoS),該主題將取消訂閱,而不管最初訂閱的QoS級別如何。
代理將確認取消訂閱消息的請求。該消息僅包含包標識符。Packet Identifier(包標識符)
分組標識符是用于標識消息的唯一標識符。它與訂閱消息中相同。從代理接收到取消訂閱消息后,就認為該取消訂閱消息中的訂閱消息已經被刪除。

這就是我們的MQTT 要點系列的第三部分的結尾。我們希望你喜歡在下一篇文章中,我們將深入了解MQTT主題的使用。我們將解釋通配符的基本知識以及使用情況以及更多實際的例子。
學習總結


作者: 自律給我自由    時間: 2017-12-10 19:31
很好,學習了
作者: b136082098    時間: 2018-5-2 07:57
感謝!想學但資質不足有聽沒有懂




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1