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