Tsung MQTT协议简介及MQTT xml文档配置介绍
MQTT協(xié)議簡介及MQTT xml文檔配置介紹
by:授客?QQ:1033553122
1.?MQTT協(xié)議介紹
MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協(xié)議),是一種基于發(fā)布/訂閱(publish/subscribe)模式的“輕量級”通訊協(xié)議,該協(xié)議構(gòu)建于TCP/IP協(xié)議上。
?
MQTT最大優(yōu)點在于,可以以極少的代碼和有限的帶寬,為連接遠程設(shè)備提供實時可靠的消息服務(wù)。做為一種低開銷、低帶寬占用的即時通訊協(xié)議,使其在物聯(lián)網(wǎng)、小型設(shè)備、移動應(yīng)用等方面有較廣泛的應(yīng)用。
?
2.?MQTT協(xié)議原理
?
?
- 實現(xiàn)MQTT協(xié)議需要:客戶端和服務(wù)器端
- MQTT協(xié)議中有三種身份:發(fā)布者(publishers)、代理(Broker,服務(wù)器)、訂閱者(Subscriber)。其中,消息的發(fā)布者和訂閱者都是客戶端,消息代理是服務(wù)器,消息發(fā)布者可以同時是訂閱者。?
- MQTT傳輸?shù)南⒎譃?#xff1a;主題(Topic)和負載(payload)兩部分
Topic?-?可以理解為消息的類型,訂閱者訂閱(Subscribe)后,就會收到該主題的消息內(nèi)容(payload)
payload?-?可以理解為消息的內(nèi)容,是指訂閱者具體要使用的內(nèi)容
?
參考連接:http://itbilu.com/other/relate/4kHBsx_Pg.html#mqtt-topic
?
3.?方法
3.1?connect
連接服務(wù)器
<request>
????<mqtt type="connect" clean_start="true" keepalive="20" will_topic="will_topic" will_qos="0" will_msg="will_msg" will_retain="false">
????</mqtt>
</request>
?
說明:
連接
clean_start - true:開啟一個新的會話。false:不清空會話信息,沿用之前相同Client_id的會話
?
keepalive -?以秒為單位,會話心跳時間,即從客戶端傳輸一個控制報文結(jié)束到開始傳輸下一個控制報文,允許的最大時間間隔。客戶端必須保證控制報文之間的傳輸時間間隔不能超過心跳時間。在沒發(fā)送其它任何控制報文的時候,客戶端必須發(fā)送一個PINGREQ報文。
?
客戶端可以不管keepalive?時間,在任意時刻,發(fā)送PINGREQ,一遍檢測網(wǎng)絡(luò)和服務(wù)器正在工作。
?
如果keepalive值不為0,且服務(wù)器在1個半的keepalive時間內(nèi),沒有收到來自客戶端的控制報文,必須斷開客戶端的網(wǎng)絡(luò)連接,正如網(wǎng)絡(luò)連接失敗
?
如果keepalive值為0,表示關(guān)閉心跳機制,這意味著服務(wù)器不要求斷開處于不活動狀態(tài)的客戶端
?
keepalive實際值是由應(yīng)用程序指定的,通常為幾分鐘。
?
will_qos -?指定發(fā)布will_msg時的QoS級別。如果Will Flag為0,那么will_qos必須為0,如果Will Flag為1,那么will_qos可以為0,1,2。不能為3。
?
will_topic -?主題名稱
?
will_msg -?定義要發(fā)布到will_topic的應(yīng)用程序消息。如果客戶端意外的斷開觸發(fā)服務(wù)器PUBLISH此消息(消息主題名為:will_topic中指定的內(nèi)容, 消息內(nèi)容為?will_msg指定的內(nèi)容)。
?
will_retain?-?用于判斷當(dāng)will_msg發(fā)布后,是否保留will_msg。如果Will Flag設(shè)置為0,will_retain必須設(shè)置為0,如果如果Will Flag設(shè)置為1,如果will_retian設(shè)置為0,服務(wù)器發(fā)布will_msg后,必須不保留will_msg消息,如果will_retian設(shè)置為1,服務(wù)器發(fā)布消息will_msg后,必須保留will_msg。tsung中will_retain可選值true(對應(yīng)1),false(對應(yīng)0)
?
參考連接:
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718028
?
3.2?publish
發(fā)布消息
<request subst="true">
????<mqtt type="publish" topic="test_topic" qos="1"??
??????????????????retained="true">test_message
??</mqtt>
</request>
?
說明:
topic -?主題名稱
qos -?值為0:至多發(fā)送一次,為1: 至少發(fā)布一次,為2: 只發(fā)送一次
retained ?-?如果設(shè)置為1,服務(wù)器必須存儲來自客戶端發(fā)送給服務(wù)器的發(fā)布消息中的應(yīng)用消息和Qos,這樣當(dāng)訂閱匹配其主題名稱時,把存儲的內(nèi)容發(fā)送給訂閱者。如果設(shè)置為0,服務(wù)器必須存儲來自客戶端發(fā)送給服務(wù)器的發(fā)布消息,且不允許移除、替換已經(jīng)存在的保留消息。
?
參考連接:
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718037
?
3.3?disconnect
斷開連接
<request>
??<mqtt type="disconnect"></mqtt>
</request>
?
3.4?subscribe
訂閱主題
<request subst="true">
????<mqtt type="subscribe" topic="test_topic" qos="1"></mqtt>
</request>
?
說明:
topic -?想要訂閱的主題名稱
qos -?如果設(shè)置為1,針對QoS 0應(yīng)用程序消息,客戶端最多只能收到一份消息,針對Qos 2,客戶端可能會收到兩份重復(fù)的消息。
?
如果設(shè)置為0,以Qos2發(fā)送的應(yīng)用消息在傳輸給客戶端,可能會丟失,而以Qos 1發(fā)送的應(yīng)用消息在傳輸給客戶端時也可能會丟失或者重復(fù)。
?
參考連接:
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718063
3.5?waitForMessages
等待消息????????????
<request>
????<mqtt type="waitForMessages" timeout="60"></mqtt>
</request>
?
說明:
timeout -?設(shè)置等待消息超時時間,單位秒
?
3.6?unsubscribe
取消訂閱主題????????????
<request subst="true">
<mqtt type="unsubscribe" topic="test_topic"></mqtt>
</request>
?
說明:
topic -?想要取消訂閱的主題名稱
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/shouke/p/10157655.html
總結(jié)
以上是生活随笔為你收集整理的Tsung MQTT协议简介及MQTT xml文档配置介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7换xp后无法开机黑屏怎么办 wi
- 下一篇: Java 单列模式(Singleton)