我正在使用MQTT 3.1.1,已经在计算机上安装了一个蚊子作为本地服务器。
我正在将一些传感器数据从pubsubclient(MQTT客户端库)发送到蚊子,并将其从蚊子服务器保存到数据库中
每当我开始会话长达5-10分钟时,我都会收到消息,但之后 MQTT客户端无法发送任何消息并自动断开连接。
在断开连接之前,它会在命令行中显示以下消息
client <clientname> has exceeded timeout, disconnecting
Socket error on client <clientname>, disconnecting.
我还使用默认配置的服务器,除了QOS设置为2
是什么导致此错误,以及 我应该怎么做,以使客户端不应该与本地服务器断开连接?
答案 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/