五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

【零基礎(chǔ)學(xué)物聯(lián)網(wǎng)】MQTT篇 1-7 MQTT主題進(jìn)階

2020-11-25 10:02 作者:太極創(chuàng)客  | 我要投稿

為了幫助您學(xué)習(xí),我們專門(mén)為本教程制作了視頻。

通過(guò)以前的學(xué)習(xí),我們了解到主題是MQTT的核心概念之一。在本節(jié)課里,我們來(lái)一起進(jìn)一步了解MQTT主題這一概念。我們將從以下幾個(gè)方面來(lái)學(xué)習(xí)MQTT主題的高級(jí)知識(shí):

1. 主題基本形式
2. 主題分級(jí)
3. 主題通配符
4. 主題應(yīng)用注意事項(xiàng)


1. 主題基本形式

主題的最基本形式就是一個(gè)字符串。以下是幾個(gè)主題示例:

  • myTopic

  • motorSpeed

  • MotorSpeed

  • current time

雖然主題看起來(lái)很簡(jiǎn)單,但是我們?cè)谑褂弥黝}時(shí)需要注意以下幾點(diǎn):

  1. 主題是區(qū)分大小寫(xiě)的。如上列表中的主題 motor_speed和Motor_speed是兩個(gè)完全不同的主題。

  2. 主題可以使用空格 如以上列表中的current time,雖然有空格分隔current和time這兩個(gè)詞,但這實(shí)際是一個(gè)MQTT主題。不過(guò),雖然我們可以使用空格,但是筆者強(qiáng)烈建議您不要在主題中使用空格。我們?cè)陂_(kāi)發(fā)時(shí)一不小心,可能就會(huì)漏掉空格,這將造成不必要的麻煩。

  3. 大部分MQTT服務(wù)端是不支持中文主題的,所以我們應(yīng)使用英文字符或ASCII字符來(lái)作為MQTT主題。

2. 主題分級(jí)

MQTT主題可以是一個(gè)簡(jiǎn)單的字符串,比如motor_speed,myTopic。這些都是單一級(jí)別的主題。

為了更好的對(duì)主題進(jìn)行管理和分類(lèi),我們可以對(duì)主題進(jìn)行分級(jí)處理。MQTT主題各個(gè)級(jí)別之間可以使用”/”來(lái)分隔。如下例所示:

Tyler-1/motor/1/speed

在以上示例中一共有四級(jí)主題,分別是第1級(jí) Tyler-1、第2級(jí)motor、第三級(jí)1、第4級(jí)speed。主題的每一級(jí)至少需要一個(gè)字符,比如以上示例中,數(shù)字1既是一級(jí)主題。

我們?cè)賮?lái)看幾個(gè)分級(jí)主題的示例:

home/sensor/kitchen/temperature
home/sensor/kitchen/brightness
home/sensor/bedroom/temperature
home/sensor/bedroom/brightness

3 主題通配符

當(dāng)客戶端訂閱主題時(shí),可以使用通配符同時(shí)訂閱多個(gè)主題。通配符只能在訂閱主題時(shí)使用,下面我們將介紹兩種通配符:?jiǎn)渭?jí)通配符和多級(jí)通配符。

單級(jí)通配符: +

顧名思義,單級(jí)通配符可以代替一個(gè)主題級(jí)別。 以下為含有單極通配符的主題示例。

home/sensor/+/temperature

當(dāng)客戶端訂閱了以上主題后,它將會(huì)收到以下主題的信息內(nèi)容:

home/sensor/kitchen/temperature
home/sensor/bedroom/temperature

我們可以看到,在home后面的級(jí)別中,由于客戶端訂閱的主題使用了+ 單級(jí)通配符,因此無(wú)論home級(jí)別后面的內(nèi)容是什么,客戶端都能收到這些主題的信息。

相反,客戶端將無(wú)法收到以下主題的信息。

home/sensor/bedroom/brightness
office/sensor/bedroom//temperature
home/screen/livingroom/temperature

以上主題的紅色部分都是客戶端無(wú)法收到信息的原因。這些紅色的部分都是與客戶端訂閱的主題“home/sensor/+/temperature”不相符的部分。

多級(jí)通配符 #

單級(jí)通配符僅可代替一個(gè)主題級(jí)別,而多級(jí)通配符”#”可以涵蓋任意數(shù)量的主題級(jí)別。如下示例所示, 多級(jí)通配符必須是主題中的最后一個(gè)字符。

home/sensor/#

當(dāng)客戶端訂閱了以上含有”#”的主題后,可以收到以下主題的信息。

home/sensor/kitchen/temperature
home/sensor/bedroom/brightness
home/sensor/data

多級(jí)通配符可以代替多級(jí)主題信息,因此無(wú)論”home/sensor”后面有一級(jí)還是多級(jí)主題,都可以被訂閱了”home/sensor/#”的客戶端接收到。

4. 主題應(yīng)用注意事項(xiàng)

– 以$開(kāi)始的主題

以$開(kāi)始的主題是MQTT服務(wù)端系統(tǒng)保留的特殊主題,我們不能隨意訂閱或者向其發(fā)布信息。以下是此類(lèi)主題的示例:

$SYS/broker/clients/connected
$SYS/broker/clients/disconnected
$SYS/broker/clients/total
$SYS/broker/messages/sent
$SYS/broker/uptime

類(lèi)似的主題還有很多。不過(guò)請(qǐng)記住一點(diǎn),以$符號(hào)開(kāi)頭的主題是系統(tǒng)保留的特殊主題,我們不能隨意訂閱或者向其發(fā)布信息。

– 不要用 “/” 作為主題開(kāi)頭
MQTT允許使用“/”作為主題的開(kāi)頭,例如/home/sensor/data。但是這將這么做毫無(wú)意義,而且會(huì)額外產(chǎn)生一個(gè)沒(méi)有用處的主題級(jí)別。所以我們應(yīng)避免使用/作為主題的開(kāi)頭。

– 主題中不要使用空格
MQTT協(xié)議允許我們?cè)谥黝}中使用空格,但是閱讀和調(diào)試含有空格的主題會(huì)顯得異常困難。所以我們盡量不要在主題中使用空格或者特殊字符。

– 保持主題簡(jiǎn)潔明了
MQTT是一種輕量級(jí)的通訊協(xié)議,它常用于網(wǎng)絡(luò)帶寬受限的環(huán)境,因此我們應(yīng)盡量讓主題簡(jiǎn)潔明了,從而讓設(shè)備間交互的內(nèi)容更加簡(jiǎn)潔,以更好的適應(yīng)網(wǎng)絡(luò)帶寬受限的環(huán)境。

– 主題中盡量使用ASCII字符
雖然很多MQTT設(shè)備支持UTF-8字符作為MQTT主題,但是筆者建議您在主題中盡量使用ASCII字符。

- 在主題中嵌入客戶端ID
在主題中嵌入發(fā)布消息的客戶端ID,這一操作可以為開(kāi)發(fā)和管理MQTT信息提供便利。通過(guò)主題中的客戶端ID內(nèi)容,我們可以很容易的了解該主題信息是由哪一臺(tái)設(shè)備所發(fā)布的。

本教程為 太極創(chuàng)客團(tuán)隊(duì) 制作的《零基礎(chǔ)入門(mén)學(xué)用物聯(lián)網(wǎng)》系列教程第二篇- MQTT篇。假如您學(xué)習(xí)本教程感到有些吃力,那么您可能還沒(méi)有觀看本系列教程 第一篇 - 基礎(chǔ)知識(shí)篇。您可以通過(guò)以下鏈接前往本教程的第一篇 - 基礎(chǔ)知識(shí)篇 教程頁(yè)面。

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

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

【零基礎(chǔ)學(xué)物聯(lián)網(wǎng)】MQTT篇 1-7 MQTT主題進(jìn)階的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
渭源县| 富锦市| 鄢陵县| 长岛县| 墨脱县| 鲁甸县| 六盘水市| 永登县| 阿克苏市| 通海县| 慈利县| 长丰县| 永城市| 汾西县| 舒兰市| 吴堡县| 宾阳县| 平舆县| 二连浩特市| 湘潭市| 运城市| 南江县| 灵璧县| 连云港市| 同江市| 济南市| 上虞市| 盘山县| 个旧市| 绥芬河市| 德惠市| 齐齐哈尔市| 高台县| 福州市| 永吉县| 大同市| 政和县| 南开区| 庐江县| 宁城县| 佳木斯市|