必威体育Betway必威体育官网
当前位置:首页 > IT技术

MQTT协议(四)>>> 【PUBLISH】发布消息

时间:2019-10-19 21:11:04来源:IT技术作者:seo实验室小编阅读:58次「手机版」
 

publish

PUBLISH控制报文是指从客户端向服务端或者服务端向客户端传输一个应用消息。

需要注意的是:上传更新数据流是PUBLISH 中一个特殊的上传方式(发送给 $dp话题),PUBLISH 不等于上传更新数据流。

PUBLISH 更像是发送邮件,而更新数据是针对某一特定数据流进行数据更新。


固定报头

在这里插入图片描述

重发标志 DUP

位置:第1个字节,第3位

如果DUP标志被设置为0,表示这是客户端或服务端第一次请求发送这个PUBLISH报文。如果DUP标志被设置为1,表示这可能是一个早前报文请求的重发。

客户端或服务端请求重发一个PUBLISH报文时,必须将DUP标志设置为1。

对于QoS 0的消息,DUP标志必须设置为0

服务端发送PUBLISH报文给订阅者时,收到(入站)的PUBLISH报文的DUP标志的值不会被传播。

发送(出站)的PUBLISH报文与收到(入站)的PUBLISH报文中的DUP标志是独立设置的,它的值必须单独的根据发送(出站)的PUBLISH报文是否是一个重发来确定

服务质量等级

位置:第1个字节,第2-1位。

在这里插入图片描述

保留标志 RETaiN

位置:第1个字节,第0位。

如果客户端发给服务端的PUBLISH报文的保留(retain)标志被设置为1,服务端必须存储这个应用消息和它的服务质量等级(QoS)

即将消息存储起来,以后有客户端订阅该主题就把之前的消息发出去

剩余长度字段

等于可变报头的长度加上有效载荷的长度。

可变报头

主题名 topic Name

主题名(Topic Name)用于识别有效载荷数据应该被发布到哪一个信息通道

主题名必须是PUBLISH报文可变报头的第一个字段

PUBLISH报文中的主题名不能包含通配符

报文标识符 Packet Identifier

只有当QoS等级是1或2时,报文标识符(Packet Identifier)字段才能出现在PUBLISH报文中。


如下为PUBLISH 报文可变报头示例:

在这里插入图片描述

因为主题名占了3字节,故报文标识符为10

在这里插入图片描述

有效载荷

有效载荷包含将被发布的应用消息。纯文本字符串JSON 字符串

数据的内容和格式是应用特定的。

响应

PUBLISH报文的接收者必须按照根据PUBLISH报文中的QoS等级发送响应

在这里插入图片描述

动作 Actions

客户端使用PUBLISH报文发送应用消息给服务端,目的是分发到其它订阅匹配的客户端

服务端使用PUBLISH报文发送应用消息给每一个订阅匹配的客户端

相关阅读

IP协议

IP协议简介 IP协议是位于网络层的协议,首先我们要知道网络层的功能:负责为数据选择合适的路径进行传输。 而IP协议的功能是寻址和

实验四 应用层和传输层协议分析(PacketTracer)

具体细节待完善!!一、实验目的:通过本实验,熟悉PacketTracer的使用,学习在PacketTracer中仿真分析应用层和传输层协议,进一步加深对协议

Socket编程(C语言实现)——基于TCP协议,基于UDP协议(多线

Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该

Zigbee协议栈应用(一)——Zigbee协议栈介绍及简单例子

1、Zigbee协议栈简介协议是一系列的通信标准,通信双方需要按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通

简单粗暴的理解 MODBUS通信协议

转自:http://baijiahao.baidu.com/s?id=1586302823192131962&wfr=spider&for=pcMODBUS通讯协议,是1979年由美国Modicon 公司提出的,

分享到:

栏目导航

推荐阅读

热门阅读