成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

MQTT遺囑消息(WillMessage)的使用-創(chuàng)新互聯(lián)

簡(jiǎn)介

當(dāng)客戶端斷開連接時(shí),發(fā)送給相關(guān)的訂閱者的遺囑消息。以下情況下會(huì)發(fā)送 Will Message:

新建網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),新建網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為新建上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的新建做網(wǎng)站的公司定做!
  • 服務(wù)端發(fā)生了I/O 錯(cuò)誤或者網(wǎng)絡(luò)失敗;
  • 客戶端在定義的心跳時(shí)期失聯(lián);
  • 客戶端在發(fā)送下線包之前關(guān)閉網(wǎng)絡(luò)連接;
  • 服務(wù)端在收到下線包之前關(guān)閉網(wǎng)絡(luò)連接。

遺囑消息一般通過(guò)在客戶端 CONNECT 的時(shí)候指定。如下所示,在連接的時(shí)候通過(guò)調(diào)用 MqttConnectOptions 實(shí)例的 setWill 方法來(lái)設(shè)定。任何訂閱了下面的主題的客戶端都可以收到該遺囑消息。

//方法1MqttConnectOptions.setWill(MqttTopic topic, byte[] payload, int qos, boolean retained)//方法2MqttConnectOptions.setWill(java.lang.String topic, byte[] payload, int qos, boolean retained)

使用場(chǎng)景

在客戶端 A 進(jìn)行連接時(shí)候,遺囑消息設(shè)定為”offline“,客戶端 B 訂閱這個(gè)遺囑主題。當(dāng) A 異常斷開時(shí),客戶端 B 會(huì)收到這個(gè)”offline“的遺囑消息,從而知道客戶端 A 離線了。

Connect Flag 報(bào)文字段

Bit 7 6 5 4 2 1 0
User Name FlagPassword FlagWill RetainWill QoSWill FlagClean StartReserved
byte 8XXXXXXX

遺囑消息在客戶端正常調(diào)用 disconnect 方法之后并不會(huì)被發(fā)送。

Will Flag 作用

簡(jiǎn)而言之,就是客戶端預(yù)先定義好,在自己異常斷開的情況下,所留下的最后遺愿(Last Will),也稱之為遺囑(Testament)。這個(gè)遺囑就是一個(gè)由客戶端預(yù)先定義好的主題和對(duì)應(yīng)消息,附加在CONNECT的可變報(bào)文頭部中,在客戶端連接出現(xiàn)異常的情況下,由服務(wù)器主動(dòng)發(fā)布此消息。

當(dāng)Will Flag位為1時(shí),Will QoS和Will Retain才會(huì)被讀取,此時(shí)消息體中要出現(xiàn)Will Topic和Will Message具體內(nèi)容,否則Will QoS和Will Retain值會(huì)被忽略掉。

當(dāng)Will Flag位為0時(shí),則Will Qos和Will Retain無(wú)效。

命令行示例

下面是一個(gè)Will Message的示例:

  1. Sub端clientid=sub預(yù)定義遺囑消息:

    mosquitto_sub --will-topic test --will-payload die --will-qos 2 -t topic -i sub -h 192.168.1.1
    
  2. 客戶端 clientid=alive 在 192.168.1.1(EMQ服務(wù)器) 訂閱遺囑主題

    mosquitto_sub -t test -i alive -q 2 -h 192.168.1.1
    
  3. 異常斷開Sub端與Server端(EMQ服務(wù)器)連接,Pub端收到Will Message 。

高級(jí)使用場(chǎng)景

這里介紹一下如何將 Retained 消息與Will 消息結(jié)合起來(lái)進(jìn)行使用。

  1. 客戶端 A 遺囑消息設(shè)定為”offline“,該遺囑主題與一個(gè)普通發(fā)送狀態(tài)的主題設(shè)定成同一個(gè) A/status;
  2. 當(dāng)客戶端 A 連接時(shí),向主題 A/status 發(fā)送 “online” 的 Retained 消息,其它客戶端訂閱主題 A/status的時(shí)候,獲取 Retained 消息為 “online” ;
  3. 當(dāng)客戶端 A 異常斷開時(shí),系統(tǒng)自動(dòng)向主題 A/status 發(fā)送”offline“的消息,其它訂閱了此主題的客戶端會(huì)馬上收到”offline“消息;如果遺囑消息被設(shè)定了 Retained 的話,這時(shí)有新的訂閱 A/status主題的客戶端上線的時(shí)候,獲取到的消息為“offline”。

分享標(biāo)題:MQTT遺囑消息(WillMessage)的使用-創(chuàng)新互聯(lián)
URL地址:http://jinyejixie.com/article8/dseoop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、品牌網(wǎng)站設(shè)計(jì)Google、小程序開發(fā)、微信小程序、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
高唐县| 忻州市| 十堰市| 迭部县| 棋牌| 伊金霍洛旗| 昌邑市| 汶上县| 福海县| 简阳市| 潍坊市| 邛崃市| 滦南县| 安远县| 资源县| 那曲县| 吉木萨尔县| 石台县| 禹州市| 贺州市| 江安县| 高台县| 哈密市| 韩城市| 定边县| 通许县| 开化县| 东乡| 龙门县| 鹤岗市| 陆良县| 木兰县| 邻水| 广西| 于都县| 东乡族自治县| 林周县| 依安县| 遂溪县| 米林县| 姜堰市|