首先,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
|
数据采集/传感器
|
较低
|
参考