关于MQTT中最后遗嘱和遗嘱消息的用法

关于MQTT中最后遗嘱和遗嘱消息的用法,mqtt,Mqtt,在我的例子中,我使用MQTT的最后一条will消息来通知某些客户端意外断开连接,例如侦听主题是“status” 我的问题是,当一个客户端连接到brokerA,然后意外地断开与brokerA的连接,但它再次连接到brokerA时,是否会向“状态”主题发送一条“最后消息” 另一个问题是:在一个客户端意外断开与代理的连接后,何时可以发送最后一条遗嘱消息。这里对LWT(最后的遗嘱和测试)有一个很好的描述: 但简单的版本如下: 只有在满足以下情况下,代理才会传递LWT消息: 服务器检测到I/O错误或网

在我的例子中,我使用MQTT的最后一条will消息来通知某些客户端意外断开连接,例如侦听主题是“status”

我的问题是,当一个客户端连接到brokerA,然后意外地断开与brokerA的连接,但它再次连接到brokerA时,是否会向“状态”主题发送一条“最后消息”


另一个问题是:在一个客户端意外断开与代理的连接后,何时可以发送最后一条遗嘱消息。

这里对LWT(最后的遗嘱和测试)有一个很好的描述:

但简单的版本如下:

只有在满足以下情况下,代理才会传递LWT消息:

  • 服务器检测到I/O错误或网络故障
  • 客户端无法在保持活动时间内进行通信
  • 客户端关闭网络连接而不发送断开连接 先包
  • 由于协议错误,服务器关闭了网络连接

你的问题不清楚,请考虑改进问题,使其更具责任性!要么我误解了你的最后陈述,要么我认为它是错的。我猜是前者,你能再解释一下你的意思吗?我一直认为,在一个适当长的keepAlive中,如果客户端崩溃并使用相同的客户端ID重新启动,你不应该看到LWT。可能是错误的,我已经有一段时间没有尝试过了。在这种情况下,这取决于代理是否检测到套接字关闭。我认为这不是你可以信赖的东西。