为了便于您学习 我们为本节课程制作了视频教程
↓
在上节课里我们了解了MQTT协议的背景知识和基本特点,这节课我们一起了解MQTT的基本工作原理。
在MQTT协议通讯中,有三个最为重要的概念。它们分别是服务端、客户端和主题。首先我们来了解一下它们。
MQTT服务端
MQTT服务端通常是一台服务器。它是MQTT信息传输的枢纽,负责将MQTT客户端发送来的信息传递给MQTT客户端。MQTT服务端还负责管理MQTT客户端。确保客户端之间的通讯顺畅,保证MQTT消息得以正确接收和准确投递。
MQTT客户端
MQTT客户端可以向服务端发布信息,也可以从服务端收取信息。我们把客户端发送信息的行为成为“发布”信息。而客户端要想从服务端收取信息,则首先要向服务端“订阅”信息。“订阅”信息这一操作很像我们在视频网站订阅某一部电视剧。当这部电视剧上新后,视频网站会向订阅了该剧的用户发送信息,告诉他们有新剧上线了。
MQTT主题
刚刚我们在讲解MQTT客户端订阅信息时,使用了用户在视频网站订阅电视剧这个例子。在MQTT通讯中,客户端所订阅的肯定不是一部部电视剧,而是一个个“主题”。MQTT服务端在管理MQTT信息通讯时,就是使用“主题”来控制的。
为了便于您更好理解服务端是如何通过主题来控制客户端之间的信息通讯,我们来看看下图实例:
在以上图示中一共有三个MQTT客户端。它们分别是汽车,手机和电脑。MQTT服务端在管理MQTT通讯时使用了“主题”来对信息进行管理的。比如上图所示,假设我们需要利用手机和电脑获取汽车的速度,那么我们首先要利用电脑和手机向MQTT服务器订阅主题“汽车速度”。
接下来,当汽车客户端向服务端的“汽车速度”主题发布信息后,服务端就会首先检查以下都有哪些客户端订阅了“汽车速度”这一主题的信息。当它发现订阅了该主题的客户端有一个手机和一个电脑,于是服务端就会将刚刚收到的“汽车速度”信息转发给订阅了该主题的手机和电脑客户端。
在以上实例中,汽车是“汽车速度”主题的发布者,而手机和电脑则是该主题的订阅者。
值得注意的是,MQTT客户端在通讯时,往往角色不是单一的。它既可以作为信息发布者也可以同时作为信息订阅者。如下图所示:
上图中的所有客户端都是围绕“空调温度”这一主题进行通讯的。对于“空调温度”这一主题,手机和电脑客户端成为了MQTT信息的发布者而汽车则成为了MQTT信息的订阅者(接收者)。
可以看到,针对不同的主题,MQTT客户端可以切换自己的角色。它们可能对主题A来说是信息发布者,但是对于主题B就成了信息订阅者。
MQTT 发布/订阅 特性
从以上实例我们可以看到,MQTT通讯的核心枢纽是MQTT服务端。有了服务端对MQTT信息的接收、储存、处理和发送,客户端在发布和订阅信息时,可以相互独立,且在空间上可以分离,时间上可以异步。这里所说的相互独立、空间和时间分离具体指的是什么呢?
以上几点概括了MQTT通讯时客户端的相互关系以及服务端在其中所起的作用。讲到这里请您注意:以上总结的几个特点中都有一个“可”字。这个“可”字意味着客户端彼此之间可以独立,空间可以分离,时间可以异步。在我们实际应用中,客户端之间的关系既可以独立也可以相互依存。在空间上,既可以相距甚远,也可以彼此相邻。在时间上,既可以异步也可以同步。这个“可”字所体现的是MQTT通讯的灵活性。
可能有些朋友看过以上文字后感觉有些抽象。毕竟这些都是纯理论知识,在后面的教程里,我们将通过实例向您讲解MQTT的应用,届时相信您会对MQTT有深切的认识。到这里,请您务必留意MQTT通讯的三个特点,彼此可独立,空间可分离、时间可异步。
----------
本教程为 太极创客团队 制作的《零基础入门学用物联网》系列教程第二篇- MQTT篇。假如您学习本教程感到有些吃力,那么您可能还没有观看本系列教程 第一篇 - 基础知识篇。您可以通过以下链接收看本教程第一篇 - 基础知识篇教程内容。
假如您也喜欢太极创客,希望您将本文“分享”或“在看”。 让更多朋友认识我们。您的每一份支持与鼓励,都是对我们最温暖的鼓励与支持。
谢谢~~~