0

有没有人有一个合乎逻辑的解释,为什么尽管我clear session flage = false没有收到我订阅的更新的发布消息,而我没有连接到经纪人?

将 aore提到的标志设置为 false 我运行了我的应用程序,并且我不断向主题发布一些值(从 PC 到代理而不是从 Android 设备到代理)。然后我从电脑上拔下安卓设备的usb,并再次发布一些值。当我再次将 USB 插入电脑时,我希望看到我最近发布到该主题的值,但我没有收到任何值。

我发布的主题正是我订阅的主题,带有QoS = 1.

4

2 回答 2

8

为了让不再连接到代理的客户端的消息排队,这些事情必须是真实的:

  • 客户端必须最初连接clean session设置为 false
  • 客户端必须以 QoS>0 订阅
  • 发往该主题的消息必须以 QoS>0 发布
  • 当客户端重新连接时,它必须与client id断开连接时相同
  • 当客户端重新连接时,它必须clean session设置为 false

我敢打赌,你在后两点中的任何一个都失败了。

于 2014-11-17T13:00:45.357 回答
0

您需要发送带有保留标志的消息,以便在重新连接时能够接收消息。QoS 定义了代理/客户端尝试确保接收到消息的难度。

在这里阅读http://mosquitto.org/man/mqtt-7.html关于 QOS、清理会话和保留消息。

于 2014-11-17T12:04:04.103 回答