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

How do I subscribe to all topics of a MQTT broker

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

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

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

您可以使用 mosquitto_submosquitto-clients 包的一部分)并订阅通配符主题 #:

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

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

具体例子

mosquitto.org 非常活跃(在发帖时)。这是针对 MQTT 订户 linux 设备的不错的冒烟测试:

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

“#”是主题和returns所有消息(主题)的通配符:服务器流量很大,因此返回了'firehose'条消息。

如果您的 MQTT 设备向测试 MQTT 代理发布 irisys/V4D-19230005/ 主题,则您可以过滤消息:

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

选项:

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