MQTT协议中的topic
1、MQTT协议中的topic
定阅与发布必须要有主题,只有当定阅了某个主题后,才能收到相应主题的payload,才能进行通信。
2、 主题层级分隔符——“/”
主题层级分隔符使得主题名结构化。如果存在分隔符,它将主题名分割为多个主题层级。
斜杠(‘/’ U+002F)用于分割主题的每个层级,为主题名提供一个分层结构。当客户端订阅指定的主题过滤器包含两种通配符时,主题层级分隔符就很有用了。主题层级分隔符可以出现在主题过滤器或主题名字的任何位置。相邻的主题层次分隔符表示一个零长度的主题层级。
如主题:
>>1 root/light
>>2 root/tv/contrl/sensor
>>3 root/tv/contrl/light
>>4 root/airconditioning/sensor
3、 多层通配符——“#”
“#”是用于匹配主题中任意层级的通配符。多层通配符表示它的父级和任意数量的子层级。多层通配符必须位于它自己的层级或者跟在主题层级分隔符后面。不管哪种情况,它都必须是主题过滤器的最后一个字符 .
例如,如果客户端订阅主题 “china/guangzhou/#”,它会收到使用下列主题名发布的消息:
>>1 china/guangzhou
>>2 china/guangzhou/huangpu
>>3 china/guangzhou/tianhe/zhongshanlu
>>4 china/guangzhou/tianhe/zhongshanlu/num123
定阅主题示例
>>1 school/# //也匹配单独的 “school” ,因为 # 包括它的父级。
>>2 # //是有效的,会收到所有的应用消息。
>>3 school/teacher/# //有效的。
>>4 school/teacher# //无效的。
>>5 school/teacher/#/lever //无效的,必须是主题过滤器的最后一个字符
4、 单层通配符—-“+”
加号是只能用于单个主题层级匹配的通配符。在主题过滤器的任意层级都可以使用单层通配符,包括第一个和最后一个层级。然而它必须占据过滤器的整个层级 。可以在主题过滤器中的多个层级中使用它,也可以和多层通配符一起使用。
>>1 china/+ 只能匹配 china/guangzhou
>>2 china/+/+/zhongshanlu 能匹配china/guangzhou/tianhe/zhongshanlu和china/shenzhen/nanshan/zhongshanlu
5、 通配符 —-“$”
通配符“$”表示匹配一个字符,只要不是放在主题的最开头,即:
>>1 $xx
>>2 /$xx
>>3 /xx$
其它情况下都表示匹配一个字符。
如果客户端想同时接受以 “SYS/”开头主题的消息和不以“SYS/”开头主题的消息和不以 开头主题的消息, 它需要同时订阅 “#” 和 “$SYS/#”。
6、 总结
- 所有的主题名和主题过滤器必须至少包含一个字符
- 主题名或主题过滤器以前置或后置斜杠 “/” 区分
- 只包含斜杠 “/” 的主题名或主题过滤器是合法的
- 主题名和主题过滤器是 UTF-8 编码字符串, 它们不能超过 65535 字节
- 主题名和主题过滤器是区分大小写的
MQTT协议中的topic的更多相关文章
- 物联网MQTT协议分析和开源Mosquitto部署验证
在<物联网核心协议—消息推送技术演进>一文中已向读者介绍了多种消息推送技术的情况,包括HTTP单向通信.Ajax轮询.Websocket.MQTT.CoAP等,其中MQTT协议为IBM制定 ...
- MQTT协议学习总结
一.MQTT介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通 ...
- Tsung MQTT协议简介及MQTT xml文档配置介绍
MQTT协议简介及MQTT xml文档配置介绍 by:授客 QQ:1033553122 1. MQTT协议介绍 MQTT(Message Queuing Telemetry Transport,消息队 ...
- 学习:MQTT协议及原理
1 MQTT协议实现方式: 实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish).代理(Broker)(服务器).订阅者(Subscribe) ...
- MQTT协议-MQTT协议解析(MQTT数据包结构)
协议就是通信双方的一个约定,即,表示第1位传输的什么.第2位传输的什么…….在MQTT协议中,一个MQTT数据包由:固定头(Fixed header). 可变头(Variable header). 消 ...
- MQTT协议学习研究 & Mosquitto简要教程(安装和使用)
若初次接触MQTT协议,可先理解以下概念: [MQTT协议特点]——相比于RESTful架构的物联网系统,MQTT协议借助消息推送功能,可以更好地实现远程控制. [MQTT协议角色]——在RESTfu ...
- MQTT协议QoS服务质量 (Quality of Service 0, 1 & 2)概念学习
什么是 QoS ? QoS (Quality of Service) 是发送者和接收者之间,对于消息传递的可靠程度的协商. QoS 的设计是 MQTT 协议里的重点.作为专为物联网场景设计的协议,MQ ...
- MQTT协议笔记之消息流
前言 前面的笔记已把所有消息类型都过了一遍,这里从消息流的角度尝试解读一下. 网络故障 在任何网络环境下,都会出现一方连接失败,比如离开公司大门那一刻没有了WIFI信号.但持续连接的另一端-服务器可能 ...
- MQTT协议及推送服务
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建 ...
随机推荐
- pycharm plot独立窗口显示
import matplotlib.pyplot as plt ... plt.show() 进行如下设置: File->Settings->Tools->Python Scient ...
- python 代码性能分析 库
问题描述 1.Python开发的程序在使用过程中很慢,想确定下是哪段代码比较慢: 2.Python开发的程序在使用过程中占用内存很大,想确定下是哪段代码引起的: 解决方案 使用profile分析分析c ...
- visual studio 无添加视图 选项
我是因为 UserController未继承 Controller
- server2008r2 安装CentOS
一:安装CentOS 二:配置虚拟网络: 三:设置创建的虚拟机使用刚才创建的网卡: 四:运行CentOs,输入用户:root 密码:root,登录后输入: dhclient 自动获取IP ip ...
- LODOP问答部分链接
点击链接进入相关简短问答博文: 问答大全 纸张打印机 注册 table表格 clodop测试地址 字体 行间距.字间距 clodop回调函数 SET_PRINT_STYLEA 页眉页脚 超文本 条码 ...
- [LeetCode] 260. Single Number III 单独数 III
Given an array of numbers nums, in which exactly two elements appear only once and all the other ele ...
- mysql查询之上升的温度,有趣的电影,超过5名学生的课,大国,反转性别, 换座位
最近发现一个网站 力扣 查看 上面有很多算法和数据库的题目,做了一下,发现自己平时都疏忽了,因此边做边记录下来 1.上升的温度 给定一个 Weather 表,编写一个 SQL 查询,来查找与之前(昨天 ...
- 【知识总结】动态 DP
勾起了我悲伤的回忆 -- NOIP2018 316pts -- 主要思想:将 DP 过程分解为方便单点修改和一个区间合并的操作(通常类似矩阵乘法),然后用数据结构(通常为线段树)维护. 例:给定一个长 ...
- Zuul学习笔记
问题: 解决:(域名映射+前缀+禁止原来访问)
- Connection: close和Connection: keep-alive有什么区别
转自:https://www.cnblogs.com/TinyMing/p/4597136.html 看到有人问Connection: close和Connection: keep-alive有什么区 ...