MQTT特点
- "轻量级"通信协议:实现MQTT协议的开销比较小,无需太多的额外数据/文本。
- 基于TCP/IP协议:建立TCP连接后,云下设备或云平台按照MQTT协议规定的数据格式来通信。(属于应用层)
- 基于客户端——服务端模式下:云下设备????客户端、云平台????服务端
- 基于[消息发布(PUBLISH)] 或 [消息订阅(SUBSCRIBE)]模式
#请求——回答模式:假设打电话的时候,只有电话被播出并且对方的电话被接听,才能开始沟通交流。典型的同步模式。
#发布——订阅模式:假设邮件发送的过程,只有邮件编辑完成之后点击发送,就可以完成。邮件服务器会将邮件发送给对应的接收者,当接收者看到邮件提醒之后,如何时候看邮件都可以。(间接联系)
#两种模式的区别: 发布——订阅模式解耦了发布消息的客户(发布者)与订阅消息的客户(订阅者)之间的关系。发布者与订阅者之间不需要直接建立联系。

如图所示,客户端B和客户端C都向MQTT订阅了主题文章,如何客户端A向MQTT发布了一个消息,这个消息的主题参数就是文章,那么MQTT会将这个主题文章消息分发给客户端B和客户端C。因为客户端B和客户端C都订阅了文章这个主题,客户端A也可以订阅这个主题,客户端A和客户端C和客户端B都可以向MQTT发布消息,逻辑上客户端A和客户端B和客户端C是可以进行通信的。但是在网络连接上,客户端A只和MQTT服务端建立网络连接,客户端B也只和MQTT服务端建立网络连接,客户端C也只和MQTT服务端建立网络连接。这样的话,消息的发布者和订阅者她们之间网络连接就是解耦的,通过MQTT服务端将消息转发给订阅者。
MQTT协议
- 客户端Client
使用MQTT的程序或设备。客户端总是通过网络连接到服务端。它可以
●发布应用消息给其它相关的客户端。
●订阅以请求接受相关的应用消息。
●取消订阅以移除接受应用消息的请求。
●从服务端断开连接。
- 服务端Server
一个程序或设备,作为发送消息的客户端和请求订阅的客户端之间的中介。服务端
●接受来自客户端的网络连接。
●接受客户端发布的应用消息。
●处理客户端的订阅和取消订阅请求。
●转发应用消息给符合条件的已订阅客户端
#服务端不是数据的终点而是数据的中转站
数据表示
- 二进制位
字节中的位从0到7。第7位是最高有效位,第0位是最低有效位。
- 整数数值
整数数值是16位,使用大端序(big-endian,高位字节在低位字节前面)。这意味着一个16位的字在网络上表示为最高有效字节(MSB) , 后面跟着最低有效字节(LSB)
- UTF-8编码字符串
文本字段编码为UTF-8格式的字符串,UTF-8编码字符串是一个高效的Unicode字符编码格式,为了支持基于文本的通信,它对ASCII字符的编码做了优化。建议大家尽量发送标准的ASCII码字符串。每个字符串都要有一个两字节的长度字段作为前缀,它给出这个字符串UTF-8编码的字节数。(MQTT编程需要计算每一个字符串的长度,并且把这个长度作为前缀。
相关文章:
-
2021-09-01
-
2022-01-17
-
2021-06-01
-
2021-07-04
-
2021-08-18
-
2022-01-18
-
2021-09-04
-
2021-11-24
猜你喜欢
-
2021-08-29
-
2021-09-02
-
2021-06-27
-
2021-09-13
-
2021-04-15
相关资源
-
下载
2023-02-06
-
下载
2022-12-11
-
下载
2023-04-02