我正在使用 moquette mqtt 代理,我正在尝试了解实现以及 MQTT 代理。我希望为个人项目对经纪人进行一些修改。
我很好奇当设备向代理发送 PUBLISH 消息时会发生什么,并且代理无法将消息传递给订阅者。该协议规定将 PUBACK 发送回发布者。在 moquette 源代码中,这个 PUBACK 似乎是在将消息转发给任何订阅者之后发送的。
我注释掉了 sendPubAck() 函数来模拟消息没有成功发布,所以我假设发布者会再次发布消息。但是,当我在传入消息处理函数旁边添加一个打印语句时,我只能看到从发布者定期发送到代理的 PINGREQ 消息。我没有看到任何发布消息。
我的问题如下:客户端设备究竟如何决定何时重新发布消息?因为注释掉 sendPubAck() 函数似乎不会让发布者重新发送消息。