TsgcWSPClient_MQTT › 方法 › Publish
使用请求的 QoS 和保留标志将消息发布到主题。
function Publish(const aTopic, aText: String; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil) : Word;
| 名称 | 类型 | 描述 |
|---|---|---|
aTopic | const String | 消息发布到的完整主题名称(不含通配符)。 |
aText | const String | 以 UTF-8 编码的载荷作为 PUBLISH 包正文发送。 |
aQoS | TmqttQoS | 投递保证:mtqsAtMostOnce (0)、mtqsAtLeastOnce (1) 或 mtqsExactlyOnce (2)。默认为 mtqsAtMostOnce。 |
aRetain | Boolean | 当为 True 时,代理将该消息存储为主题的保留值,并转发给新订阅者。 |
aPublishProperties | const TsgcWSMQTTPublish_Properties | 可选的 MQTT 5.0 属性(Content Type、Response Topic、Message Expiry、User Properties)。传入 nil 可省略。 |
分配给 PUBLISH 数据包的数据包标识符;QoS 1 和 2 时非零,QoS 0 时为零。可用于与 OnMQTTPubAck、OnMQTTPubRec 和 OnMQTTPubComp 进行关联。(Word)
文本重载,适用于 JSON 文档和其他 UTF-8 内容。调用在数据包交付给传输层后立即返回;QoS 1/2 确认异步投递。需要通过 Connect 建立活跃的 MQTT 会话。
MQTT.Publish('sensors/temp', '{"value":22.5}', mtqsAtLeastOnce, True);
function Publish(const aTopic: String; const aStream: TStream; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil) : Word;
| 名称 | 类型 | 描述 |
|---|---|---|
aTopic | const String | 二进制有效负载发布到的完全限定主题名称。 |
aStream | const TStream | 源流,其完整内容将作为 PUBLISH 有效负载原样发送。位置由组件保存并恢复。 |
aQoS | TmqttQoS | 投递保证:mtqsAtMostOnce (0)、mtqsAtLeastOnce (1) 或 mtqsExactlyOnce (2)。默认为 mtqsAtMostOnce。 |
aRetain | Boolean | 为 True 时,broker 将负载存储为该主题的保留值。 |
aPublishProperties | const TsgcWSMQTTPublish_Properties | 可选的 MQTT 5.0 属性,通常用于在发送二进制数据时设置 Content Type(例如 image/png)。 |
PUBLISH 数据包的数据包标识符;QoS 0 时为零。启用与确认事件的关联。(Word)
用于文件、protobuf 帧、图像和其他非文本有效负载的二进制重载。流在序列化之前会被完整读取,因此非常大的有效负载应在应用层分块以避免大量内存分配。QoS、Retain 和属性的行为与文本重载相同。
oStream := TFileStream.Create('firmware.bin', fmOpenRead or fmShareDenyWrite);
try
MQTT.Publish('devices/123/firmware', oStream, mtqsExactlyOnce);
finally
oStream.Free;
end;