MQTT入门
概念
mqtt意为消息队列遥测传输,是IBM开发的一个即时通讯协议。由于其维护一个长连接以轻量级低消耗著称,所以常用于移动端消息推送服务开发。
协议格式
mqtt协议控制报文的格式包含三部分:
以固定报头、可变报头和有效载荷,其中固定报文头是所有控制报文都有的,可变报头和有效载荷都是部分控制报文。
mqtt是二进制的协议,控制字段是精确到Bit级别的,单纯这一点就足以为其在物联网领域占据一席之地。mqtt是不支持分包等机制,并不适宜一些数据包特别大的应用场景。
mqtt特性
- 使用发布/订阅消息模式,提供一对多消息发布;
- 对负载内容屏蔽的消息传输;
- 使用TCP/IP进行网络连接;
- 具有三种消息发布服务质量选项:
- 1."至多一次",通常app的推送使用的是这种模式,也就是说,如果移动设备在消息推送的时候没有联网,那么再次联网就不会收到通知了;
- 2."至少一次",可以确保消息收到,但消息可能会重复;
- 3."只有一次",确保消息到达一次,比如计费系统,如果出现消息重复或者丢失会导致系统结果不正确的问题。
- 小型传输,开销很小,协议交换最小化,以降低网络流量;
- 通知有关各方客户端异常中断的机制。
mqtt协议实现方式
在mqtt协议中有三种身份:
- 发布者(publish):发布者是客户端,可以进行发布消息
- 代理(broker):代理指的是服务器,比较有名的是emqtt,当前可以其他成熟的框架去搭建mqtt服务
- 订阅者(subscribe):指的客户端,不过发布者同时也可以是订阅者。
mqtt服务端和客户端实现的功能
mqtt服务端
- 接受来自客户端的网络连接;
- 接受客户发布的应用信息;
- 处理来自客户端主题订阅和退订请求;
- 向订阅的客户端转发应用程序消息
mqtt客户端
- 给其他客户端发布订阅的消息;
- 订阅其他客户端发布的消息;
- 退订和订阅主题;
- 断开服务器连接
mqtt协议中的方法
- connect:等待服务器建立连接;
- disconnect:等待客户端完成所做的工作,并与服务器断开TCP/IP会话;
- subscribe:主题订阅;
- unsubscribe:主题取消订阅;
- publish:发送消息
mqtt的安装
mqtt简单使用
配置文件解析