就像我们之前提到的,MQTT协议的通信是通过发布/订阅的方式来实现的,消息的发布方和订阅方通过这种方式进行解耦,它们之间没有直接的连接,所以需要一个中间方来对信息进行转发和存储。在MQTT协议里,我们称这个中间方为Broker,而连接到Broker的订阅方和发布方我们称之为Client。
一次典型的MQTT协议消息通信流程如图3-1所示。
图3-1 MQTT协议消息通信流程
1)发布方和订阅方都建立了到Broker的TCP连接。
2)订阅方告知Broker它要订阅的消息主题(Topic)。
3)发布方将消息发送到Broker,并指定消息的主题(Topic)。
4)Broker接收到消息以后,检查都有哪些订阅方订阅了这个主题(Topic),然后将消息发送到这些订阅方。
5)订阅方从Broker获取该消息。
6)如果某个订阅方此时处于离线状态,Broker可以先为它保存此条消息,当订阅方下次连接到Broker的时候,再将之前的消息发送到订阅方。
在本书的后续部分,我们将发送方称为Publisher,将订阅方称为Subscriber。