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

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

我正在使用 MQTT 3.1.1,我在我的电脑上安装了一个蚊子作为本地服务器。

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

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

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

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

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

导致此错误的原因以及 我应该怎么做,这样客户端才不会与我的本地服务器断开连接?

mqtt mosquitto esp32
1个回答
0
投票

正在订阅的节点(如果发布节点花费太长时间再次发布,则可能是发布节点)需要 Connect 调用集上的“keepalive”字段。大多数 MQTT 代理将在大约 5 分钟后超时连接,除非您在设置中修改了超时值。

将“keepalive”选项设置为 30 或 60 秒之类的值将防止 MQTT Broker 断开连接。您的订阅者将开始发送 PINGREQ 数据包,MQTT 代理将回复 PINGRESP 数据包。

在这里阅读更多内容:http://www.steves-internet-guide.com/mqtt-keep-alive-by-example/

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