客户端<客户端名称>已超过超时断开连接

时间:2020-09-29 09:23:55

标签: mqtt mosquitto esp32

我正在使用MQTT 3.1.1,已经在计算机上安装了一个蚊子作为本地服务器。

我正在将一些传感器数据从pubsubclient(MQTT客户端库)发送到蚊子,并将其从蚊子服务器保存到数据库中

每当我开始会话长达5-10分钟时,我都会收到消息,但之后 MQTT客户端无法发送任何消息并自动断开连接。

在断开连接之前,它会在命令行中显示以下消息

client <clientname> has exceeded timeout, disconnecting
Socket error on client <clientname>, disconnecting.

我还使用默认配置的服务器,除了QOS设置为2

是什么导致此错误,以及 我应该怎么做,以使客户端不应该与本地服务器断开连接?

1 个答案:

答案 0 :(得分:0)

要订阅的节点(如果发布节点花费的时间太长,可能需要重新发布),则需要Connect呼叫集中的“ keepalive”字段。除非您在设置中修改了超时值,否则大多数MQTT Broker都会在5分钟后超时连接。

将'keepalive'选项设置为30或60秒,将防止MQTT Broker断开连接。您的订户将开始发送PINGREQ数据包,而MQTT代理将以PINGRESP数据包答复。

在此处了解更多信息:http://www.steves-internet-guide.com/mqtt-keep-alive-by-example/