MQTT主题Topic讲解

更新时间:2023-05-19 11:16:39 阅读: 评论:0

MQTT主题Topic讲解家常炒螃蟹
参考:
如果传统的通信⽅式是客户端和服务端之间⼀般就直接传输信息。但是MQTT的通信⽅式是通过发布/订阅的⽅式进⾏的。笔者不知道他是否跟设计模式中的发布订阅模式有没有关系。可是他们思想却有⼀点相似之处。
客户端知道服务上有很多个主题。就好⽐如说有很多消息的分类⼀样⼦。有社会新闻、体育讲坛等。那么客户端只要找到⾃⼰感兴趣的进⾏订阅就可以了。⼀个客户端可以向服务器订阅多个主题。⽽所谓的发布就是客户端对不同的主题进⾏发布信息。即好⽐如新闻的发布者⼀样⼦。这个时候只要订阅这个主题的客户端就可以接收到来⾃服务端的新闻。我们的⼿机常常会接收到⼀些推送的信息。事实上有很多App应⽤都是⽤MQTT协议来进⾏的。所以不难看出服务端主要是负责客户端和客户端的之间信息的传输和信息管理。⼤⾄如图下
狂狮怒吼>赵师秀约客注意:发布者也是客户端。订阅者也是客户端
主题(Topic )
如果主题只是⼀个字符串值的话,那么显然会⽐较单调。这样⼦功能也显得⽐较⽆⼒。所以在主题上⾯就了所谓的分隔符和通配符的说法(个⼈想法)。分隔符的意思就是让主题可以分层次。就好如说主题“体育讲坛/篮球/NBA”。看到这样⼦的主题,请问⼀下你还有什么不明⽩的话。是不是感觉很有层次感。剩下只有⼀个问题?如果我们订阅了主题“体育讲坛/篮球/NBA”,并向主题“体育讲坛/篮球”发布⼀个信息。那么已经订阅主题“体育讲坛/篮球/NBA”的客户端们是不是可以接受到信息呢?反过来讲如果我们订阅了主题“体育讲坛/篮球”,向主题“体育讲坛/篮球/NBA”发信息,客户端们是否⼜能接受信息呢?
佩恩图片
笔者就以HiveMQ作服务器来做⼀下上⾯的⼩实验。如下
小锦鲤
手机内存卡客验结果显然是失败的——订阅主题“体育讲坛/篮球/NBA”的客户端根本收不到来⾃主题“体育讲坛/篮球“的发布信息。说明分隔符就是⽤于主题名的分层次。没有别的意思。
冷门歌曲通过上⾯的实验我们知道如果想要收到NBA就是必须订阅主题“体育讲坛/篮球/NBA”。可是总是有⼀些⼈只要是篮球的新闻有喜欢。怎么办。通配符的功能就出来了。通配符有俩种——”+”和“#”。+为单层的通配符。表⽰当前这⼀层的全都合⾮。这样⼦以上⾯的说到的例⼦来做实验。我们订阅⼀个主题为“体育讲坛/篮球/+”。按照理解的意思就是只要是在“体育讲坛/篮球”的信息都是我们想要的。结果如下
我们可以看到笔者在“体育讲坛/篮球/NBA”和“体育讲坛/篮球/ABC”各发布了信息。结果他都能收到。那么如果我们对主题“体育讲坛/篮球”或是主题“体育讲坛/篮球/NBA/福州专场”发布信息呢?笔者试过了很可惜都不⾏。
记得我们上⾯说到有⼀些⼈只要跟篮球相关的都喜欢。可是如果使⽤通配符“+”是可以接近我们的要求。注意是接近。“+”通配符只是表⽰当前⼀层的。从当前的第⼆层就不⾏了。⽽本⾝的层也不算。就像上⾯的。只有篮球下的⼦⼀层才是合⾮的。讲到这⾥⼤家⼀定会想到⽤“#“通配符试试。没有错。“#“通配符就是表⽰当前本⾝和下⾯⼦层所有。如下
美丽的深秋实验的结果很终满⾜了。
对于主题,在⽂档中有⼀个要求——主题不能以 ”#“ “+” ““⼜是什么⿁。在⽂档我们可以看到这样⼦的字符”“开头的主题⼀般⽤于系统内部的⼀些主题。你们可以去找⼀些第三⽅的MQTT服务器。都会有很多以”$“开头的主题。

本文发布于:2023-05-19 11:16:39,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/693745.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:主题   体育   讲坛   订阅   篮球   信息
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图