MQTT协议(三) PUBLISH

本文详细介绍了MQTT协议中PUBLISH消息的结构、服务器与客户端的交互、不同QoS级别下的响应机制,以及发布者和订阅者的行动规则。重点讨论了PUBLISH消息的DUP、RETAIN标志,以及PUBACK、PUBREC、PUBREL和PUBCOMP等响应消息的角色。此外,还提到了服务器如何处理并分发消息到订阅者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、服务器<----->PUBLISH<------>客户端

可以发布消息从publisher发送到服务器,或从服务器到subscriber。一个订阅者可以订阅若干个主题(Topic name),但一个PUBLISH消息只能拥有一个主题。

例如下面是一个PUBLISH消息:



1、固定头部

    DUP flag--------设为0,表示当前为第一次发送。

    RETAIN flag-----只有在PUBLISH消息中才有效。

        为1:表示发送的消息需要一直持久保存,不但要发送给当前的订阅者,并且以后新来的订阅了此Topic name的订阅者会马上得到推送。 备注:新来乍到的订阅者,只会取出最新的一个RETAIN flag = 1的消息推送,不是所有。

        为0:仅仅为当前订阅者推送此消息,这意味不保留。


2、可变头部

    Topic name,UTF-8编码字符串形式,不支持通配符!

    Message ID,代表QoS level 1QoS level 2消息。


3、消息体

    一般作为UTF-8编码写入接口,但不排除自定义的消息格式。

    空的消息体(zero-length)的PUBLISH消息也可以是合法的。

    当服务器接收到空消息体(zero-length payload)、retain = 1、具有topic name的一个PUBLISH特殊消息,表示同时满足retain = 1、相同topic name的这两个特征的被持久化PUBLISH消息,可被删除。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值