继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Shifu教你轻松理解MQTT ——(3)主题Topics

KubeShifu
关注TA
已关注
手记 23
粉丝 1
获赞 3

Shifu 能够轻松接入MQTT协议的相关设备,帮助发布者和订阅者轻松使用(Topic)。在本篇文章中,我们将不赘述MQTT中发布者、代理和订阅者之间如何使用主题(Topic),而直接讨论主题的结构以及怎样定义主题。

Shifu是由边无际Edgenesis自主研发的物联网开源开发和管理平台,开发者通过Shifu可以轻松实现连接、监控和控制任何物联网设备。


主题的定义

主题可以看作是一个字符串,其格式类似Linux文件系统的命名方式。平时,我们会从左到右、从高到低地描述一个主题的多个层次,就像下面这样:“earth/antarctica/elderthings/shoggoth”。其中,“earth”、 “antarctica”、 “elderthings”和 “shoggoth” 分别是上述主题的四个层次。

订阅

订阅者需要告诉代理自己订阅的主题是什么,而MQTT让我们可以自由地使用通配符来同时匹配多个主题。

+:单层通配符

#: 单层和多层通配符 (该通配符只能放在主题末尾)

假如我们有下面五个主题:

  • “earth/antarctica/elderthing/shoggoth”

  • “earth/antarctica/worker/shoggoth”

  • “earth/antarctica/migo”

  • “earth/antarctica/cthulhu/starspawn”

  • “yith/greatrace”

如果订阅者A订阅了 “earth/antarctica/+/shoggoth”,那么他可以收到来自 “earth/antarctica/elderthing/shoggoth ”和 “earth/antarctica/worker/shoggoth ”的信息。

如果订阅者B订阅了 “earth/antarctica/#”,那么他可以收到 “earth/antarctica ”下所有四个主题的信息。

如果订阅者C订阅了 “#”,那么他就可以收到上述五个主题的信息。

$SYS

“$SYS”是一个特殊的主题,用于代理跟踪和维护系统统计数据。除了代理,其他人都不能向该主题发布信息。

记住,确保MQTT服务与上述标准兼容,这是MQTT协议使用者的工作。默认情况下,MQTT几乎允许我们在主题字符串中使用任何东西,包括非ASCII字符。


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP