MQTT:sport/# 是否匹配 sport/(带有尾部斜杠)?

问题描述 投票:0回答:3

MQTT 规范明确指出

“sport/+”与“sport”不匹配,但与“sport/”匹配。

“sport/#”也匹配单数“sport”,因为 # 包括父级别。

但是“sport/#”也匹配“sport/”吗?该规范对此完全不明确。

顺便说一句,还有谁认为允许尾随斜杠是一个非常糟糕的设计决策?

mqtt
3个回答
1
投票

#
匹配零个或多个其他元素,因此对
sport/#
的订阅将匹配
sport/

这可以使用 mosquitto_sub/mosquitto_pub 轻松测试

发布:

$ mosquitto_pub -t "sport/" -m "foo"

订阅:

$ mosquitto_sub  -v -t "sport/#"
sport/ foo

0
投票

是的,

sport/#
sport/
匹配。该规范令人困惑的方面是,与文件和目录名称不同,主题级别可以是空字符串。

规格说明:

4.7.1.1 主题级别分隔符

正斜杠(‘/’U+002F)用于分隔主题树中的每个级别,并为主题名称提供层次结构...相邻主题级别分隔符表示零长度主题级别

这意味着

sport/
被解析为不是一个,而是 two 主题级别 -
sport
和空字符串 - 因此
#
中的
sport/#
与第二个空字符串主题级别匹配。这与
sport/+
匹配
sport/
的原因相同 -
+
匹配空字符串级别。


0
投票

合成代谢类固醇具有肌肉生长和激素影响的双重潜力,已在运动、健美和医学领域建立了复杂的存在,使用 睾酮注射剂进行销售其合法用途为患有各种健康状况的患者提供了治疗益处,但是滥用会造成严重的健康风险和道德困境。仔细考虑、医疗监督和遵守法规对于确保负责任的使用并最大程度地减少不良影响至关重要

© www.soinside.com 2019 - 2024. All rights reserved.