【问题标题】:mosquitto_publish returns MOSQ_ERR_SUCCESS eventhough MQTT broker is not running即使 MQTT 代理未运行,mosquitto_publish 也会返回 MOSQ_ERR_SUCCESS
【发布时间】:2017-07-26 02:02:43
【问题描述】:

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

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

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

连接到代理后,我停止了代理服务。

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

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

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

为什么即使代理正在运行,mosquitto_publish 也会返回成功?如何解决这个问题?

提前致谢。

【问题讨论】:

  • 那个客户是什么语言???爪哇?蟒蛇?
  • 我正在使用 Mosquitto C 客户端库。我也尝试使用 Paho C MQTT 客户端库,在这种情况下,它的行为也很相似。

标签: publish mqtt mosquitto libmosquitto


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 2014-09-07
    • 1970-01-01
    • 2019-08-09
    • 2018-05-13
    • 1970-01-01
    • 2020-03-06
    • 2018-04-02
    • 1970-01-01
    相关资源
    最近更新 更多