Swift MQTT libmosquitto cleanSession设置为false但无法设置持久订阅

时间:2016-08-19 02:37:59

标签: swift mqtt libmosquitto

client = MosquittoClient(clientId: "client1")
client?.delegate = self
client?.port = 1883
client?.host = "someIPAddress"
client!.cleanSession = false
client?.connect()

libmosquitto是一个客观的c库,它被桥接到一个快速的项目中。因此,在将cleanSession设置为false后,我仍然无法在脱机时设置持久订阅或接收消息。

1 个答案:

答案 0 :(得分:0)

设置cleanSession = false将无法完成您的工作。如果您想在重新连接后收到消息,则需要QOS。

默认情况下,qos of message和subscribe为0,不保证邮件将被传递给离线客户端。

你需要做两件事:
1.当您订阅主题时,请订阅QOS 1或2 2.当您发布要传递给离线客户端的消息时,使用qos 1或2发送。

Nd也使用相同的客户端ID进行连接..如果您希望在发布消息时使用retain = true的新客户端也接收消息