1.介绍
MQTT 是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,因此易于实现。这些特点使得它对很多场景来说都是很好的选择,包括受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT),这些场景要求很小的代码封装或者网络带宽非常昂贵。
详细中文协议文档请参见 MQTT-3.1.1-CN
本协议运行在 TCP/IP,或其它提供了有序、可靠、双向连接的网络连接上。它有以下特点:
A:使用发布/订阅消息模式,提供了一对多的消息分发和应用之间的解耦
B: 消息传输不需要知道负载内容
C:很小的传输消耗和协议数据交换,最大限度减少网络流量
D:异常连接断开发生时,能通知到相关各方
E:提供三种等级的服务质量
E1 “最多一次”,尽操作环境所能提供的最大努力分发消息。消息可能会丢失。例如,这个等级可用于环境传感器数据,
单次的数据丢失没关系,因为不久之后会再次发送
E2 “至少一次”,保证消息可以到达,但是可能会重复。
E3 “仅一次”,保证消息只到达一次。例如,这个等级可用在一个计费系统中,
这里如果消息重复或丢失会导致不正确的收费。
2.安装Mosquitto MQTT服务器
2.1 终端
@ubuntu:~$ sudo apt-get install mosquitto
2.2.查看命令参数
@ubuntu:~$ mosquitto -h
mosquitto is an MQTT v3.1 broker.
Usage: mosquitto [-c config_file] [-d] [-h] [-p port]
-c : specify the broker config file.
-d : put the broker into the background after starting.
-h : display this help.
-p : start the broker listening on the specified port.
Not recommended in conjunction with the -c option.
See http://mosquitto.org/ for more information.
2.3在15000端口启动mosquitto 服务器
@Ubuntu:~$ mosquitto -p 15000
1530949572: mosquitto version 0.15 (build date 2017-06-30 22:26:39+0000) starting
1530949572: Opening ipv4 listen socket on port 15000.
1530949572: Opening ipv6 listen socket on port 15000.
3.测试MQTT服务器
3.1安装MQTT 客户端mosquitto-clients
@ubuntu:~$ sudo apt-get install mosquitto-clients
安装mosqutitto-clients客户端系统多出2个命令,mosqutitto_pub(发布),mosqutitto_sub(订阅)
3.2查看mosqutitto_sub(订阅) 帮助
@ubuntu:~$ mosquitto_sub -h
3.3启动订阅客户端新开一个终端
@ubuntu:~$ mosquitto_sub -v -p 15000 -t sensor
-v:开启查看调试; -p: mqtt服务器端口号15000; -t :toptic 需要订阅的主题
3.4查看mosqutitto_pub(发布) 帮助
@ubuntu:~$ mosquitto_pub -h
3.3新开一个终端 启动发布主题客户端
@ubuntu:~$ mosquitto_pub -p 15000 -t sensor -m [name:haha,age:20]