MQTT
MQTT提供三种Qos的消息传递质量:
a.最多一次(Atmost once delivery):QoS=0,协议对此等级应用信息不要求回应确认,
也没有重发机制,这类信息可能会发生消息丢失或重复,取决于TCP/IP提供的尽最大努力交互的数据包服务。
b.最少一次(Atleast once delivery):QoS=1,确保信息到达,但消息重复可能发生,
发送者如果在指定时间内没有收到PUBACK控制报文,应用信息会被重新发送,且控制报文中DUP标志位置1。
c.仅仅一次(Exactlyonce delivery):QoS=2,最高级别的服务质量,消息丢失和重复都是不可接受的。
MQTT的消息类型
MQTT的三种角色通过14种不同的消息类型进行交互:
1.CONNECT控制报文用于客户端请求与服务器建立连接,应用层的连接而不是TCP/IP连接,CONNECT控制报文的发送在TCP/IP建立连接后;
2.CONNACK控制报文用于服务器向请求连接的客户端回发连接确认;
3.PUBLISH控制报文用于发布指定主题名的应用信息;
4.PUBACK/PUBREC/PUBREL/PUBCOMP控制报文用于针对不同服务质量的应用信息的回应;
5.SUBSCRIBE控制报文用于订阅者向服务器发送一个主题过滤器列表,用于表示客户端想要订阅的主题;
6.SUBACK控制报文用于SUBSCRIBE控制报文的响应;
7.UNSUBSCRIBE控制报文用于向服务器发送一个主题过滤器列表,用于表示客户端想要取消订阅的主题;
8.UNSUBACK控制报文用于UNSUBSCRIBE控制报文的响应;
9.PINGREQ/PINGRESP控制报文作为客户端和服务器间的心跳包;
10.DISCONNECT控制报文用于客户端在断开前告诉服务器其将断开连接;
Mosquitto : Mqtt server
安装Mosquitto
Ubuntu 16.04在默认软件存储库中有一个相当新版本的Mosquitto。使用非root用户登录,并使用apt-get安装Mosquitto。
sudo apt-get install mosquitto mosquitto-clients
在新终端中,使用mosquitto_sub订阅测试主题:
mosquitto_sub -h localhost -t test
-h用于指定MQTT服务器的主机名, -t是主题名。 由于mosquitto_sub正在等待消息到达,因此在按ENTER后没有输出。切换回您的其他终端并发布消息:
mosquitto_pub -h localhost -t test -m "hello world"
模块 |
功能 |
mosquitto.conf |
mosquitto服务器的配置文件 |
mosquitto |
用来开启broker |
mosquitto_passwd |
用来设置用户的账号与密码 |
mosquitto_pub |
用来发布消息 |
mosquitto_sub |
用来订阅消息 |
pwfile.example |
通过mosquitto_passwd来存储用户的账号密码的文件 |
读取信息
mosquitto_sub -h 192.168.0.22 -v -t "#" 读取192.168.0.22的所有信息
打开服务器
mosquitto -d -v
paho : mqtt client
在linux上安装
git clone https://github.com/eclipse/paho.mqtt.c.git
cd paho.mqtt.c
make
sudo make install