如何在Mosquitto MQTT中使用客户端ID?

时间:2018-06-02 06:54:49

标签: mqtt mosquitto

我是Mosquitto的新手。我在Ubuntu中安装了Mosquitto和Mosquitto Client。我正在尝试使用client-id订阅也使用client-id发布,请查看我在控制台中运行的命令,但不幸的是,订阅者没有收到消息。

订阅 mosquitto_sub -h localhost -t temp/city1 -c -q 2 --id client-one

发布 mosquitto_pub -h localhost -t temp/city1 -m "32 Celsius" -q 2 --id client-one

但如果我发布没有客户端ID的消息,则订阅者正在接收消息,所以请帮助我在哪里犯错误?

1 个答案:

答案 0 :(得分:1)

正如评论中所提到的, clientIds 就是这样,它们是连接到代理的每个客户的唯一标识符。

ClientIds需要完全唯一,如果第二个客户端尝试连接已连接的clientid,则代理必须断开第一个客户端以允许第二个客户端连接(这由规范决定)。在您给出订阅者的示例中,订阅者将在收到第二个发布的消息之前断开连接。

消息发布到主题,客户可以订阅这些主题(或使用通配符的主题模式)

因此,使用mosquitto命令行工具,您可以执行以下操作:

mosquitto_sub -v -t 'foo/bar'

这将订阅主题foo/bar并打印出主题,然后在向该主题发布消息时发送消息。要发布包含字符串testing的消息,您将使用:

mosquitto_pub -t 'foo/bar' -m 'testing'

如果命令行上没有提供随机的clientid,那么mosquitto命令行工具将会生成。