点击上方“中兴开发者社区”,关注我们
每天读一篇一线开发者原创好文
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一套ISO标准的基于发布/订阅机制的消息协议,用于在TCP网络中传输大规模物联网设备数据,是5G通讯的重要服务对象,值得我们花时间去了解学习。IBM于1999年提出MQTT,于2013年将MQTT3.1版本提交给OASIS(Organization for the Advancement of Structured Information Standards )标准化,目前主流的稳定版本为MQTT 3.1.1。MQTT官网为http://mqtt.org/。
本文采用简单的Node.js程序搭建MQTT基础环境,介绍MQTT的典型应用场景,以供感兴趣的读者参考和理解。以如下序列图为例,在MQTT中可能存在三种类型的网元或终端:
CLIENT1和CLIENT2为用于发布(Publish)数据的客户端(通常是物联网终端设备),即“发布者”。
CLIENT3和CLIENT4为用于订阅(Subscribe)接收数据的客户端或服务器(也可能是物联网终端设备),即“订阅者”。
BROKER用于中转数据,各种IoT云服务平台通常均支持作为此角色,即“代理”。
方式1:只启动MQTT服务,默认监听1883/TCP端口
命令:mosca -v
输出:{ "pid":8282,"hostname":"<主机名>","name":"mosca","level":30,"time":1518403379005,"msg":"server started","mqtt":1883,"v":1}
方式2:只启动MQTTS服务(MQTTS,即MQTT over SSL/TLS),默认监听8883/TCP端口
命令:mosca -v --key ../cert/server_key_no_password.pem --cert ../cert/server.pem
输出:{ "pid":8314,"hostname":"<主机名>","name":"mosca","level":30,"time":1518403384861,"msg":"server started","mqtts":8883,"v":1}
方式3:同时启动MQTT和MQTTS服务,默认监听1883/TCP端口和8883/TCP端口
命令:mosca -v --key ../cert/server_key_no_password.pem --cert ../cert/server.pem --non-secure
输出:{ "pid":8333,"hostname":"<主机名>","name":"mosca","level":30