一、服务器<----->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 1和QoS level 2消息。
3、消息体
一般作为UTF-8编码写入接口,但不排除自定义的消息格式。
空的消息体(zero-length)的PUBLISH消息也可以是合法的。
当服务器接收到空消息体(zero-length payload)、retain = 1、具有topic name的一个PUBLISH特殊消息,表示同时满足retain = 1、相同topic name的这两个特征的被持久化PUBLISH消息,可被删除。