1.簡單介紹下MQTT
? ? ? ?MQTT代表MQ遙測傳輸。 它是一種發布/訂閱,極其簡單和輕量級的消息傳遞協議,專為受限設備和低帶寬,高延遲或不可靠的網絡而設計。 設計原則是最小化網絡帶寬和設備資源要求,同時還試圖確保可靠性和一定程度的交付保證。 這些原則也使該協議成為新興的“machine-to-machine”(M2M)或“物聯網”世界的連接設備,以及帶寬和電池功率非常高的移動應用的理想選擇。
2.消息服務器EMQ
? ? ? ? 消息服務器使用的是EMQ,對于簡單實現功能來說使用EMQ的免費版本就可以嘍。相對下載安裝啟動都比較友好,成本較低,鏈接成功后的操作頁面也還不錯。
3.iOS端進行配置
? ? ? ?我使用的是MQTTClient,看了下他們的MQTTChatDemo,字面上來看是個關于聊天的demo,下載后看相當于創建了三個用戶,然后在一起群聊,因為他們訂閱的是一個主題嘛。并且MQTTChatDemo使用的MQTTClient?版本也是不是最新的版本,所以考慮基于MQTTClient寫個簡單的單聊和群聊的。至于MQTTClient使用起來比較友好具體配置實現,如果有疑問可以參考我的Demo。
3.1簡單說下Demo的使用
?1.使用模擬器編譯成功后,會出現user1?user2?user3,三個按鈕,點擊哪個用戶身份就是哪個。建議開啟兩到三個模擬器,分別選擇不同的身份。
?2.選擇單聊對象就可以進行聊天了。
?3.點擊群聊直接進入群列表(我懶就搞了一個),點擊按鈕進入群聊。
?4.Demo暫時比較基本,也會逐步優化的。
4.簡單聊下單聊和群聊我的實現思路
4.1單聊
? ? ? ?因為MQTT的核心思路是訂閱,單聊我這邊的做法是,每個用戶訂閱一個自己獨立的主題,舉個栗子,A向B發消息,A是把消息發送到B所訂閱的主題上,然后B收到消息(A - > 主題(B訂月的主題)-> B)。同理如果B向A發消息,把流程顛倒下就OK了。
4.2群聊
? ? ? 群聊相對簡單,當群主A創建群的時候,進行一個群主題的創建,好友B C接到邀請后同意入群(這個操作相當于,好友對群主創建的主題進行訂閱操作 A ->創建主題A ? B,C ->訂閱主題A)
5.待完善的功能和感悟
? ? ? ? 當前Demo只是簡單的實現了群聊和單聊,至于離線消息存儲,未開啟App時的消息推送等等的一些功能還需要后臺開發進行配合和協調。總的來說個人覺得MQTT的訂閱模式,更適合做消息推送,分發訂閱信息,物聯機械制造等一對多的場景,當然也有說MQTT會替代XMPP的。
參考阿里微消息服務