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的。
参考阿里微消息服务