MQTT 的基础知识
● MQTT的是基于发布/订阅的方式进行的网络通信协议 ,常用于物联网中。
○ 其中发布和订阅是基于主题topic来发送消息的
○ MQTT是再TCP协议上实现的网络通信协议。
● 在MQTT的通信过程中的两个动作:订阅和发布,是由客户端和服务器来参与完成的。一个客户端既可以是订阅者,也可以是发布者。
● 客户端(client)
○ 可以向MQTT服务器上传很多个topic的消息,也能订阅MQTT服务器支持转发的多个topic
○ MQTT的客户端想要长期和服务器保持连接,需要设置一个呼吸时间或者叫心跳周期keepalive,每隔一段时间向服务器发送心跳包来保持活跃。
○ keepalive是在MQTT协议中的connect packet中设置并且告诉服务器的
■ MQTT客户端在向MQTT服务器发送连接请求的时候,就会将keepalive打包告诉服务器
■ 心跳包,其实就是客户端ping了一次服务器
● 服务器(broker)
○ MQTT服务器负责对所有topic消息的暂存、转发和清除。
● 客户端和服务器的连接和断开:
○ 连接和断开连接请求都是由客户端发起的
○ 服务器不可以主动连接客户端
● topic的payload(消息载体),必须要先连接一个服务器,才可以向服务器发布消息。客户端对服务器创建连接、订阅和发布等,设计方法:
- Connect: MQTT客户端与服务器创建连接;
- Disconnect:MQTT客户端完成正在做的工作后断开与服务器的连接
- Subscribe:MQTT客户端订阅某个主题的订阅
- UnSubscribe:客户端去次奥对某个主题的订阅
- Publish:客户端发送某个主题的消息给服务器
● 对于客户端连接服务器的请求控制包,其payload的要求是:
○ 遗嘱、用户名和密码不是必须的