1、什么是MQTTweb
MQTT的全称是“ Message Queuing Telemetry Transport”,即消息队列遥测传输,是一种基于订阅/发布模式的应用层协议,而http是一种基于restful风格的一种应用层协议。服务器
MQTT协议是一种轻量级协议,做为一种低开销、低带宽占用的即时通信协议,常被应用于物联网项目。一样基于订阅/发布模式的中间件有ActiveMQ,Kafka等消息中间件,归根结底实现的都是消息的传输。restful
2、如何理解MQTT网络
MQTT的是一种应用层协议,每一种协议都有其适用场景,而MQTT常被应用于消息推送,消息采集。例如温度检测仪器定时上传温度、检测矿洞氧气浓度等。socket
MQTT是基于TCP/IP的一种应用层协议,TCP/IP自己已实现了在不可靠的网络环境提供可靠的网络传输的功能,而MQTT协议也有其保障消息可靠传输的策略。tcp
MQTT推送的消息有三种消息质量ui
1.至多一次,即消息只推送一次,至于消息有没有推送成功spa
2.至少一次,须要确认消息到达,可能会致使收到重复数据(注:MQTT定义的重发机制与tcp的重复机制是不一样的,tcp的重复机制是在限定时间内若是没有收到对应序号的响应报文,则会从新推送该序列号对应的报文,而MQTT的重发机制是在客户端从新创建链接时,rest
补发以前没有对应响应报文的数据包,固然客户端能够选择是否要接收这些以前没有传输成功的数据包。最开始使用netty实现MQTT服务器的时候就理解错了,觉得MQTT的重复机制与tcp的重复机制同样)netty
3.只有一次,确认消息只到达一次,经常使用于对数据要求严格的场景,例如计费场景,订单场景
3、如何使用MQTT
MQTT的客户端和服务端目前已有成熟的开源产品,例如服务端有emqx,客户端有Eclipse Paho Mqtt(Java),均可以方面的引入相应的库快速的实现推送功能(具体可根据需求查看对应的API)。
本质上来将是客户端与服务端创建一个Socket,而后根据MQTT协议规定发送响应的报,例如创建socket后发送connet报文去创建链接,而后服务器会解析该链接报文,并保存该链接的相关信息。
咱们能够把MQTT协议的规定当成是咱们实现web项目中所实现的业务逻辑。
4、MQTT协议的相关的名词解析
1.订阅(Subscription)
订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)。订阅会与一个会话(Session)关联。一个会话能够包含多个订阅。每个会话中的每一个订阅都有一个不一样的主题筛选器。
2.、会话(Session)
每一个客户端与服务器创建链接后就是一个会话,客户端和服务器之间有状态交互。会话存在于一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络链接。
3.主题名(Topic Name)
链接到一个应用程序消息的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每一个客户端。
4.主题筛选器(Topic Filter)
一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。
5.负载(Payload)
消息订阅者所具体接收的内容。