客服端向服务端发布、订阅、取消

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

这里写目录标题

PUBLISH – 发布消息

MQTT客户端一旦连接到服务端便可以发布消息。 每条发布的MQTT消息必须包含一个主题。MQTT服务器可以通过主题确定将消息转发给哪些客户端。

MQTT客户端发布消息时会向服务端发送PUBLISH报文。以下是PUBLISH报文的详细信息。
请添加图片描述
topicName – 主题名

主题名用于识别此信息应发布到哪一个主题。
packetId – 报文标识符

报文标识符可用于对MQTT报文进行标识。不同的MQTT报文所拥有的标识符不同。MQTT设备可以通过该标识符对MQTT报文进行甄别和管理。请注意报文标识符的内容与QoS级别有密不可分的关系。只有QoS级别大于0时报文标识符才是非零数值。如果QoS等于0报文标识符为0。

QoS – 服务质量等级

QoSQuality of Service表示MQTT消息的服务质量等级。QoS有三个级别0、1和2。

retainFlag – 保留标志

在默认情况下false当客户端订阅了某一主题后并不会马上接收到该主题的信息。只有在客户端订阅该主题后服务端接收到该主题的新信息时服务端才会将最新接收到的该主题信息推送给客户端。
但是在有些情况下我们需要客户端在订阅了某一主题后马上接收到一条该主题的信息。这时候就需要将retainFlag 设为true服务端将这些retainFlag 设为true的消息保留在本地当有新的订阅该主题时就会把消息发给客户端。

Payload – 有效载荷

有效載荷是我们希望通过MQTT所发送的实际内容。我们可以使用MQTT协议发送文本图像等格式的内容。这些内容都是通过有效載荷所发送的。

dupFlag – 重发标志

当MQTT报文的接收方没有及时确认收到报文时发送方会重复发送MQTT报文。在重复发送MQTT报文时发送方会将此“重发标志”设置为true。请注意重发标志只在QoS级别大于0时使用。

SUBSCRIBE – 订阅主题

客户端要想订阅主题首先要向服务端发送主题订阅请求。客户端是通过向服务端发送SUBSCRIBE报文来实现这一请求的。该报文包含有一系列“订阅主题名”。请留意一个SUBSCRIBE报文可以包含有单个或者多个订阅主题名。也就是说一个SUBSCRIBE报文可以用于订阅一个或者多个主题。

SUBACK – 订阅确认

服务端接收到客户端的订阅报文后会向客户端发送SUBACK报文确认订阅。

SUBACK报文包含有“订阅返回码”和“报文标识符”这两个信息。

returnCode – 订阅返回码

客户端向服务端发送订阅请求后服务端会给客户端返回一个订阅返回码。

在之前的讲解中我们说过客户端可通过一个SUBSCRIBE报文发送多个主题的订阅请求。服务端会针对SUBSCRIBE报文中的所有订阅主题来逐一回复给客户端一个返回码。

这个返回码的作用是告知客户端是否成功订阅了主题。以下是返回码的详细说明。
请添加图片描述
另外每一个SUBACK报文也包含有“报文标识符”。MQTT设备可以通过该标识符对报文进行管理。

UNSUBSCRIBE – 取消订阅

顾名思义当客户端要取消订阅某主题时可通过向服务端发送UNSUBSCRIBE – 取消订阅报文来实现。
请添加图片描述
以上示意图显示UNSUBSCRIBE报文包含两个重要信息第一个是取消订阅的主题名称。同一个UNSUBSCRIBE报文可以同时包含多个取消订阅的主题名称。另外UNSUBSCRIBE报文也包含“报文标识符”MQTT设备可以通过该标识符对报文进行管理。

当服务端接收到UNSUBSCRIBE报文后会向客户端发送取消订阅确认报文 – UNSUBACK报文。该报文含有客户端所发送的“取消订阅报文标识符”。

客户端接收到UNSUBACK报文后就可以确认取消主题订阅已经成功完成了。

<- 返回MQTT篇目录

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6