如何订阅 MQTT 代理的所有主题

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

我想连接一个客户端,它将监视代理的所有主题以在我不知道主题名称是什么时响应事件。

mqtt mosquitto
4个回答
126
投票

订阅

#
可以订阅所有内容,但以
$
开头的主题除外(无论如何这些通常都是控制主题)。

当然,最好先知道您要订阅什么,并注意某些代理配置可能不允许明确订阅

#


79
投票

您可以使用

mosquitto_sub
(它是
mosquitto-clients
包的一部分)并订阅通配符主题
#

mosquitto_sub -v -h broker_ip -p 1883 -t '#'

14
投票

具体例子

mosquitto.org 非常活跃(在本文发布时)。这是 MQTT 订阅者 Linux 设备的一个很好的冒烟测试:

mosquitto_sub -h test.mosquitto.org -t "#" -v

"#"
是主题的通配符并返回所有消息(主题):服务器有很多流量,所以它返回了一个“firehose”的消息。

如果您的 MQTT 设备向测试 MQTT 代理发布

irisys/V4D-19230005/
主题,那么您可以过滤消息:

mosquitto_sub -h test.mosquitto.org -t "irisys/V4D-19230005/#" -v

选项:

  • -h
    主机名(默认 MQTT 端口 = 1883)
  • -t
    在主题之前

2
投票

使用通配符“#”但要注意,在某些时候你将不得不以某种方式理解通过总线传递的数据!

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