即使 MQTT 代理未运行,mosquitto_publish 也会返回 MOSQ_ERR_SUCCESS

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

我使用 Mosquitto C 客户端库连接到 MQTT 代理。

我使用下面的代码进行连接。

ret = mosquitto_connect (mosq, MQTT_HOSTNAME, MQTT_PORT, 0);

连接到经纪人后,我停止了经纪人服务。

现在我尝试使用下面的代码发布消息。

ret = mosquitto_publish (mosq, NULL,topic, strlen (文本), 文本, 1, 1);

尽管代理正在运行,mosquitto_publish API 也会返回成功。 第二次调用 mosquitto_publish API 时,返回 14。

尽管代理正在运行,为什么 mosquitto_publish 返回成功?如何解决此问题?

提前致谢。

publish mqtt mosquitto libmosquitto
2个回答
2
投票

当与

mosquitto_start()
一起使用时,
mosquitto_publish()
函数是完全异步的。它所做的只是向队列添加一条新消息并唤醒网络线程。如果客户端上次尝试与代理通信时一切正常,那么我们无法知道连接已关闭。当您调用
mosquitto_publish()
时,它只能返回成功,除非出现任何其他错误。当客户端尝试发送该发布时,它发现网络已关闭,因此任何后续发布都将返回相应的错误。


0
投票

我也是,真的很困扰,这个问题最后是怎么做完的 谢谢

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