Mosquitto简介:
Mosquitto是用C语言实现的MQTT物联网协议v3.1 的消息代理服务器。提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单。
5G时代已经到来,物联网时代,万物互联。未来只有人想不到的,没有做不到的。物联网最近乃至以后都会很火,业余时间计划对Mosquitto源码进行一个研究分析以及用go语言按着Mosquitto的思路去重新实现一遍MQTTv3.1协议,作为一个学习和提高的过程。
Mosquitto源码下载位置:http://mosquitto.org/files/source/
物联网(Internet of Things,IoT)最近曝光率越来越高。虽然HTTP是网页的事实标准,不过机器之间(Machine-to-Machine,M2M)的大规模沟通需要不同的模式:之前的请求/回答(Request/Response)模式不再合适,取而代之的是发布/订阅(Publish/Subscribe)模式。这就是轻量级、可扩展的MQTT(Message Queuing Telemetry Transport)可以施展拳脚的舞台。
MQTT简介:
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
mosquitto的安装和使用:
安装过程略,可参照网上博文:常见MQTT服务器搭建与试用https://www.jianshu.com/p/e5cf0c1fd55c
常用客户端测试工具还有:MQTTBox和MQTT.fx
常用MQTT服务器有:EMQTT,Mosquitto,Apollo
apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
或者现成的MQTT服务器,如阿里云,百度云,华为云等公用的云平台提供的MQTT服务。
EMQ是目前开源社区最为流行的MQTT Broker
安装成功后,在终端运行mosquitto_sub --help 或 mosquitto_pub —help获取脚本参数说明:
mosquitto_pub参数说明:
-d 打印debug信息
-f 将指定文件的内容作为发送消息的内容
-h 指定要连接的域名 默认为localhost
-i 指定客户端clientid,默认为附加进程ID的mosquitto_pub_
-I 指定clientId前缀
-m 消息内容
-n 发送一个空(null)消息
-p 连接端口号
-q 指定QoS的值(0,1,2)
-t 指定topic
-u 用户名
-P 用户密码
-V 指定MQTT协议版本
--will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
--will-qos Will的QoS值。该参数需要与--will-topic一起使用
--will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使 用
--will-topic 用户发送Will消息的topic
mosquitto_sub参数说明
-c 指定客户端clean_session是否保存。
-d 打印debug信息
-h 指定要连接的域名 默认为localhost
-i 指定客户端clientid
-I 指定clientId前缀
-k keepalive 每隔一段时间,发PING消息通知broker,仍处于连接状态。 默认为60秒.
-q 指定希望接收到QoS为什么的消息 默认QoS为0
-R 不显示陈旧的消息
-t 订阅topic
-v 打印消息
--will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
--will-qos Will的QoS值。该参数需要与--will-topic一起使用
--will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使>用
--will-topic 用户发送Will消息的topic
启动代理服务
mosquitto -v
【-v】打印更多的调试信息
订阅主题
mosquitto_sub -v -t sensor
【-t】指定主题,此处为sensor
【-v】打印更多的调试信息
发布内容
mosquitto_pub -t sensor -m 12
【-t】指定主题
【-m】指定消息内容
mosquitto客户端和服务器运行命令:
[1] 发布者客户端运行命令示例:
./mosquitto_pub -h 127.0.0.1 -p 1883 -t "111" -m "this is a msg" -u root -P 123
[2] 订阅者客户端运行命令示例:
./mosquitto_sub -h 127.0.0.1 -i 111 -p 1883 -t 111 -k 60 -d -c -u root -P 123
[3] mosquitto服务器端运行命令示例:
./mosquitto