mingdu.zheng at gmail dot com
http://blog.csdn.net/zoomdy/article/details/79093176
首先,MQTT和CoAP没有好不好的问题,只有适合什么应用场景的问题。
MQTT
MQTT的特点是可以保持长连接,具有一定的实时性,云端向设备端发送消息,设备端可以在最短的时间内接收到并作出响应,所以MQTT更适合需要实时控制的场合,更适合执行器。要保持长连接,那么就要时不时地发送心跳包,这就不会省电了。所以低功耗的场合并不适合MQTT。MQTT的长连接需要建立在TCP的基础上,TCP协议的复杂性决定了对设备的要求是比较高一些的,相比UDP。
CoAP
CoAP的特点是低功耗,数据发完就可以休眠了。所以CoAP更适合数据采集的场合,更适合纯粹的传感器设备,特别是电池供电的传感器设备。基于UDP协议,对设备的要求比较简单。华为出的NB-IoT芯片就只支持UDP和CoAP,华为的决策告诉我们CoAP和NB-IoT是一对。
对比
协议 | 核心特点 | 下层协议 | 应用场合 | 硬件要求 |
---|---|---|---|---|
MQTT | 长连接 | TCP | 实时控制/执行器 | 较高 |
CoAP | 低功耗 | UDP | 数据采集/传感器 | 较低 |
参考
MQTT Wiki
MQTT 3.1.1 specification
CoAP Wiki
RFC7252: The Constrained Application Protocol (CoAP)