mqtt客户端经常丢失连接的原因推测:
mqtt服务端突然掉线了,mqtt服务端也没有保存mqtt客户端的信息,
当mqtt服务重启后,mqtt客户端还不知道mqtt服务端已经重启,并且之前客户端订阅的信息已经丢失
mqtt客户端继续使用旧的订阅连接重启后的mqtt服务端,所以出现了丢失连接?
解决方法:
connectionTimeout设置为0,让mqtt客户端能马上知道mqtt服务端掉线了
并且可以尝试把cleanSession设置为false,让mqtt服务端保持mqtt客户端的会话,但这样就要固定客户端id
但如果connectionTimeout设置为0,mqtt客户端应该会马上超时并且会被清理,所以cleanSession也可以设置为true?
// 动态获取客户端id的方法
MqttAsyncClient.generateClientId()