2016-08-19 188 views
1
client = MosquittoClient(clientId: "client1") 
client?.delegate = self 
client?.port = 1883 
client?.host = "someIPAddress" 
client!.cleanSession = false 
client?.connect() 

libmosquitto是一個客觀的c庫,可以跨接到swift項目中。因此,在將cleanSession設置爲false後,我仍然無法在脫機時設置持久訂閱或接收消息。Swift MQTT libmosquitto cleanSession設置爲false,但無法設置持久訂閱

+0

使用保留=真正的新客戶接收你得到了什麼錯誤? – pableiros

+0

沒有錯誤。但是,當我在客戶端處於脫機狀態時向客戶端推送消息時,希望客戶端在重新連接後獲取消息。但事實並非如此。 @pableiros –

+0

你正在使用哪個經紀商? – hardillb

回答

0

設置一個cleanSession = false將不會做你的工作。如果你想收到一條消息,重新連接之後,將需要QOS ..

通過消息的默認QoS和訂閱是0,這並不能保證該消息將被傳遞到離線客戶..

你需要做兩件事情:
1.當您訂閱一個主題訂閱它具有QoS 1或2
2.當您發佈你想成爲的訊息交付給脫機客戶端發送具有QoS 1或2

釹也使用相同的客戶端ID,用於連接..如果你想要的消息也同時發佈消息

+0

我已經訂閱了QOS 1的主題,並且還向具有QOS 1的脫機客戶發佈了消息。但是,客戶端在離線時仍然無法收到任何消息。 –

+0

連接到代理時使用相同的客戶端ID? –

+0

是的。絕對是一樣的 –