2015-08-27 25 views
0

我已經在谷歌搜索這個,但aparently沒有人已經嘗試過,或它不是最佳做法。我正在使用MQTTClient在ios應用程序中,當我想保存用戶的數據時,它訂閱的主題

我得到MQTT客戶端對象並且能夠進行通信,當我想要保存他們的聊天和客戶端時,出現問題,因此當他們中的任何一個聯機或脫機時另一個可能會收到通知。

一個Psuedo代碼或只是一個流程指導這種方法就足夠了,因爲我無法想象所述過程的流程。

請指導我一個教程或只是幫助我瞭解這裏的東西的流程。

這是我準備作爲研究MQTT系統的一部分的演示。

回答

1

您正在尋找的是使用MQTT實現的,但您需要使用兩個功能。

首先,您必須確保您的客戶端使用非乾淨會話進行連接(並確保它們始終使用相同的客戶端名稱進行連接,而這些名稱必須是唯一的)。這將確保客戶的狀態保存在MQTT代理上;換句話說,訂閱只需要在客戶端第一次連接時添加。

其次,您將需要使用QoS 1訂閱和QoS 1發佈。在QoS 1發佈將保證消息已被MQTT代理成功接收並傳遞到所有目標。 QoS 1訂閱將保證消息將被髮送到客戶端,無論它在發佈時是否在線(假設它已經請求非乾淨會話,如果它當前處於脫機狀態)。

此外,我建議使用QoS 0發送客戶端來「聯機」(但所有其他「聊天」消息可以並應該在QoS 1發送/接收時)通知的通知。

+0

謝謝你的建議。 它幫助我解決了困境。非常感激。 – saurabh2810

+0

您是否也可以告訴我關於我可以通過MQTT消息發送的內容的限制? – saurabh2810

+0

MQTT消息的有效負載可以看作是一個字節數組。這爲您提供了足夠的靈活性來傳輸任何內容,假設在軟件級別進行了適當的轉換。 –

相關問題