国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【零基礎學物聯(lián)網(wǎng)】MQTT篇 2-6 MQTT遺囑

2020-12-24 11:17 作者:太極創(chuàng)客  | 我要投稿

為了幫助您學習,我們專門為本教程制作了視頻。


在之前的課程里,我們學習了MQTT協(xié)議的心跳機制。該機制可以讓服務端隨時掌握客戶端連接情況。當客戶端“心跳”正常時,服務端即知道客戶端仍然在線(活著)。當心跳一旦停止,服務端就會發(fā)現(xiàn)該客戶端已經(jīng)斷線(死亡)。


為了讓客戶端可以更好的發(fā)揮作用,便于服務端管理,MQTT協(xié)議允許客戶端在“活著”的時候就寫好遺囑,這樣一旦客戶端意外斷線,服務端就可以將客戶端的遺囑公之于眾。

請注意,在上面的這段話中,我將意外斷線這幾個字特意做了標注,這是因為,客戶端的遺囑只在意外斷線時才會發(fā)布,如果客戶端正常的斷開了與服務端的連接,這個遺囑機制是不會啟動的,服務端也不會將客戶端的遺囑公布。

那么什么是意外斷線呢?

當客戶端正常斷開連接時,會向服務端發(fā)送DISCONNECT報文,服務端接收到該報文后,就知道,客戶端是正常斷開連接,而并非意外斷開連接。

MQTT斷開連接報文

然而,當服務端在沒有收到DISCONNECT報文的情況下,發(fā)現(xiàn)客戶端“心跳”停止了,這時服務端就知道客戶端是意外斷線了。

那究竟是什么原因會導致客戶端意外斷線呢?我們知道MQTT協(xié)議作為物聯(lián)網(wǎng)協(xié)議可能用于不穩(wěn)定的網(wǎng)絡環(huán)境,假如客戶端的網(wǎng)絡信號突然出現(xiàn)問題,就會導致了意外斷線。

另外,有些客戶端設備使用電池供電,當電池沒電時,也會出現(xiàn)意外斷網(wǎng)的情況。當然,造成意外斷網(wǎng)的情況還有很多,以上是較為常見的情況。

通過以上講解,我們了解了客戶端遺囑的作用,接下來我們仔細看一下關于客戶端遺囑的幾個重要話題:

  1. 客戶端如何將遺囑消息發(fā)送給服務端

  2. MQTT遺囑使用建議

1. 客戶端如何將遺囑消息發(fā)送給服務端

在之前的課程里我為大家講解了MQTT客戶端是如何連接服務端的。

MQTT客戶端要想連接服務端,首先要向服務端發(fā)送CONNECT報文。下圖是CONNECT報文所包含的信息內容。

MQTT CONNECT報文中的遺囑信息

在上圖的CONNECT報文中,我特意使用紅色對一系列信息進行了標注??蛻舳苏窃谶B接服務端時,利用這一系列信息將遺囑消息發(fā)送給服務端。下面我們來分別看一下這些信息的作用。

lastWillTopic – 遺囑主題

遺囑消息和普通MQTT消息很相似,也有主題和正文內容。lastWillTopic的作用正是告知服務端,本客戶端的遺囑主題是什么。只有那些訂閱了這一遺囑主題的客戶端才會收到本客戶端的遺囑消息。

以上圖為例,此遺囑主題為”hans/will”。也就是說,只有訂閱了主題”hans/will”的客戶端,才會收到這臺客戶端的遺囑消息。

lastWillMessage – 遺囑消息

遺囑消息定義了遺囑消息內容。在本示例中,那些訂閱了主題”hans/will”的客戶端會在客戶端意外斷線時,收到服務端發(fā)布的“unexpected exit”。

lastWillQoS – 遺囑QoS

在之前的課程里,我們學習了服務質量的概念。對于遺囑消息來說,同樣可以使用服務質量來控制遺囑消息的傳遞和接收。這里的服務質量與普通MQTT消息的服務質量是一樣的概念。也可以設置為0、1、2。對于不同的服務質量級別,服務端會使用不同的服務質量來發(fā)布遺囑消息。

lastWillRetain – 遺囑保留

遺囑消息也可以設置為保留消息,關于保留消息的具體內容,我們在之前的課程中曾經(jīng)學習過。遺囑保留用于設置遺囑消息是否需要進行保留處理。服務端會根據(jù)此處內容,對遺囑消息進行相應的保留與否處理。

2. MQTT遺囑操作建議

在使用MQTT遺囑時,我們建議您通過以下方法讓設備的MQTT遺囑機制可以更好的發(fā)揮作用。

假設我們現(xiàn)在有一臺MQTT客戶端。它的client id是 client-1。它的遺囑主題是“client-1-will”

1. 當client-1連接服務端時,CONNECT報文中的遺囑消息是“offline”。并且它的遺囑保留設置為true。

2. 當client-1成功連接服務端后,立即向遺囑主題“client-1-will”發(fā)布一條消息“online”。同時在發(fā)布此消息時,保留標志設置為true。這樣,只要client-1在線,那么任何設備一訂閱“client-1-will”就能收到設備在線的消息“online”。

3. 如果client-1發(fā)生意外離線。那么任何設備一訂閱“client-1-will”就會收到設備離線的消息”offline”。

4. 如果client-1恢復連接,那么它會將遺囑主題“client-1-will”的保留消息更改為“online”,這樣任何設備一訂閱“client-1-will”就能收到設備在線的消息“online”。

假如您也喜歡太極創(chuàng)客,希望您將本文“分享”給更多的人,讓更多朋友認識我們。您的每一份點贊與投幣,都是對我們最溫暖的鼓勵與支持。

本文編輯制作:CYNO朔 (https://space.bilibili.com/415252426/)

【零基礎學物聯(lián)網(wǎng)】MQTT篇 2-6 MQTT遺囑的評論 (共 條)

分享到微博請遵守國家法律
镇原县| 祁连县| 垫江县| 尼木县| 商都县| 通榆县| 江口县| 收藏| 新疆| 尉犁县| 鄂伦春自治旗| 大悟县| 丹棱县| 安岳县| 布拖县| 陕西省| 巴塘县| 成都市| 鹤山市| 新乡县| 苍南县| 丹东市| 温泉县| 普兰县| 绵竹市| 眉山市| 交城县| 城固县| 广州市| 高安市| 浑源县| 惠水县| 禹州市| 台东县| 饶平县| 霸州市| 揭西县| 百色市| 壶关县| 剑川县| 大庆市|