Wizzercn/MqttWk

在使用org.eclipse.paho.client.mqttv3进行qos1级别消息发送时,接收客户端会出现由于会话过期而导致的链接断开

Closed this issue · 1 comments

原因:在mqttv3客户端源码中,org.eclipse.paho.client.mqttv3.internal.ClientState#checkForActivity这个方法中会判断是否需要发送心跳。 其中有个变量lastInboundActivity会随着puback的发送而改变。这个变量会推迟心跳发送的时机。从而导致一个只接受消息而不发送消息的客户端在下次发送心跳的时间间隔会超过你设定的keepAlive*1.5的大小

建议在PubAck处理方法中添加对session的过期时间处理

嗯,最新版代码应该已经修复了。