清除会话标志设置为FALSE时,我缺少已发布的值

时间:2014-11-17 11:33:30

标签: android mqtt messagebroker paho

是否有人有合理的解释为什么尽管我有clear session flage = false我没有收到我订阅的更新的已发布消息但我没有连接到经纪人?

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

我发布的主题正是我订阅的主题QoS = 1

2 个答案:

答案 0 :(得分:7)

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

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

我敢打赌,你在后两点都失败了。

答案 1 :(得分:0)

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

在QOS,干净会话和保留消息上阅读此处http://mosquitto.org/man/mqtt-7.html

相关问题