我使用的是MQTT 3.1.1,我在我的电脑上安装了一个蚊子作为本地服务器。
我将一些传感器数据从pubsubclient (MQTT客户端库)发送给蚊子,并从蚊子服务器将其保存到数据库中
每当我启动会话到5-10分钟时,我都会收到消息,但在那之后,MQTT客户端无法发送任何消息并自动断开连接。
在断开连接之前,它会在命令行中打印以下消息
client <clientname> has exceeded timeout, disconnecting
Socket error on client <clientname>, disconnecting.此外,除了QOS设置为2之外,我还使用默认配置的服务器
是什么导致了这个错误?我应该怎么做,才能使客户端不会与本地服务器断开连接?
发布于 2020-09-30 02:50:49
正在订阅的节点(如果再次发布花费的时间太长,则可能还有发布节点)需要Connect调用集上的“keepalive”字段。大多数MQTT代理都会在大约5分钟后使连接超时,除非您已经修改了设置中的超时值。
将“keepalive”选项设置为类似于30或60秒的值将防止MQTT代理断开连接。您的订阅者将开始发送PINGREQ数据包,MQTT代理将使用PINGRESP数据包进行回复。
点击此处阅读更多信息:http://www.steves-internet-guide.com/mqtt-keep-alive-by-example/
https://stackoverflow.com/questions/64116651
复制相似问题