MQTT 的基础知识

● MQTT的是基于发布/订阅的方式进行的网络通信协议 ,常用于物联网中。

○ 其中发布和订阅是基于主题topic来发送消息的

○ MQTT是再TCP协议上实现的网络通信协议。

● 在MQTT的通信过程中的两个动作:订阅和发布,是由客户端和服务器来参与完成的。一个客户端既可以是订阅者,也可以是发布者。

java订阅多个mqtt服务器 mqtt一个topic多个订阅者_java订阅多个mqtt服务器


● 客户端(client)

○ 可以向MQTT服务器上传很多个topic的消息,也能订阅MQTT服务器支持转发的多个topic

○ MQTT的客户端想要长期和服务器保持连接,需要设置一个呼吸时间或者叫心跳周期keepalive,每隔一段时间向服务器发送心跳包来保持活跃。

○ keepalive是在MQTT协议中的connect packet中设置并且告诉服务器的

■ MQTT客户端在向MQTT服务器发送连接请求的时候,就会将keepalive打包告诉服务器

■ 心跳包,其实就是客户端ping了一次服务器

● 服务器(broker)

○ MQTT服务器负责对所有topic消息的暂存、转发和清除。

● 客户端和服务器的连接和断开:

○ 连接和断开连接请求都是由客户端发起的

○ 服务器不可以主动连接客户端

● topic的payload(消息载体),必须要先连接一个服务器,才可以向服务器发布消息。客户端对服务器创建连接、订阅和发布等,设计方法:

  1. Connect: MQTT客户端与服务器创建连接;
  2. Disconnect:MQTT客户端完成正在做的工作后断开与服务器的连接
  3. Subscribe:MQTT客户端订阅某个主题的订阅
  4. UnSubscribe:客户端去次奥对某个主题的订阅
  5. Publish:客户端发送某个主题的消息给服务器


    ● 对于客户端连接服务器的请求控制包,其payload的要求是:

    ○ 遗嘱、用户名和密码不是必须的