Android Push Mqtt

目录

MQTT是一种M2M协议,用于节点之间通信,网上不少人推荐它,认为其性能和开销方面要强于XMPP,准备搞个demo试一下。

看了它的官方网站(http://mqtt.org/) ,不爽的是主流的服务器端实现是IBM的闭源服务器,对于喜欢开源有洁癖的我来说,很是不爽,而且一想到要和IBM的一堆服务绑到一起,一阵恶心又要涌上心头。不过MQTT也有开源的实现Mosquitto,据说性能上可能暂时不及IBM。

准备先从了解了解MQTT的协议,看看它到底在哪些方面要优于XMPP。如果真的可取,可以考虑以后用到我们的实时消息推送里头去。

这里有个基于IBM技术的MQTT android端的介绍,虽然年代稍远,不过写的还是很详尽的,最重要的是它是中文。

在IBM的官方文档中,对MQTT作了如下的概述:

MQ 遥测传输 (MQTT) 是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。例如,但不仅限于此:
网络代价昂贵,带宽低、不可靠。
在嵌入设备中运行,处理器和内存资源有限。
该协议的特点有:
+使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
+对负载内容屏蔽的消息传输。
+使用 TCP/IP 提供网络连接。
有三种消息发布服务质量:
+”至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。 +”至少一次”,确保消息到达,但消息重复可能会发生。 +”只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

  • 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。
  • 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。