我们客户电脑的mqtt会2分钟断开一次,我们用我们的电脑登录上去就一次都不会断开,实在找不到原因!
可能是由于客户端没有对连接设置进行优化或者设置不当,导致连接在2分钟内断了一次。建议您先检查一下客户端mqtt的设置,看看是否有最佳设置可以避免断开,比如设置心跳间隔、消息确认等参数。另外,如果是根据网络状况去调整mqtt的设置,您可以调整重试时间参数,使得mqtt客户端对网络情况有更好的适应性。
mqtt 有个keepalive参数,如果客户端没有上报心跳包,而服务器端要求客户端需要心跳包,当检测不到客户端的心跳包,就会断开连接。
客户电脑的mqtt会2分钟断开一次,我们用我们的电脑登录上去就一次都不会断。
可见服务器是同一个服务器,而客户端不同,可以用wireshark工具,抓取客户电脑的pcap包和我们电脑的pcap包进行对比,就能轻松找到断开的原因。
客户端可以通过 cleanSession 进行标记,来告诉 broker 代理自己需要怎样的会话,在与代理建立连接时可以选择请求持久会话。
cleanSession = true 非持久会话 如果客户端请求非持久会话,那么当客户端与代理断连时其前一个持久会话的所有排队消息都将丢失。
cleanSession = false 持久会话 如果客户端请求持久会话,代理服务端将保存会话的所有信息