TsgcWSPClient_MQTT › 方法 › Subscribe
以请求的 QoS 将客户端订阅到一个或多个主题过滤器。
function Subscribe(const aTopic: String; aQoS: TmqttQoS = mtqsAtMostOnce; const aSubscribeProperties: TsgcWSMQTTSubscribe_Properties = nil) : Word;
| 名称 | 类型 | 描述 |
|---|---|---|
aTopic | const String | 要订阅的主题过滤器;支持单级(+)和多级(#)通配符。 |
aQoS | TmqttQoS | 代理应为匹配消息传递的最大 QoS。默认为 mtqsAtMostOnce。 |
aSubscribeProperties | const TsgcWSMQTTSubscribe_Properties | 可选的 MQTT 5.0 属性,例如订阅标识符、本地不转发标志、保留发布或保留处理。传入 nil 则使用默认值。 |
SUBSCRIBE 数据包的数据包标识符。将其与通过 OnMQTTSubscribe 报告的授权相关联,以了解代理实际分配的 QoS。(Word)
单主题重载,最常用的形式。入站消息通过 OnMQTTPublish(或 MQTT 5.0 的 OnMQTTPublishEx)呈现。如果代理不支持请求的 QoS 级别或 ACL 规则适用,代理可能会降级 QoS。
MQTT.Subscribe('sensors/+/temperature', mtqsAtLeastOnce);
function Subscribe(aTopics: TsgcWSTopics): Word;
| 名称 | 类型 | 描述 |
|---|---|---|
aTopics | TsgcWSTopics | 包含各自 QoS 设置的主题过滤器集合,作为单个 SUBSCRIBE 数据包发送。 |
批量 SUBSCRIBE 数据包的数据包标识符;用于关联通过 OnMQTTSubscribe 收到的所有授权。(Word)
批量重载,在一次往返中订阅多个过滤器。优先使用它,而非循环调用单个主题,以减少网络交互,并让代理有机会在单个 SUBACK 中返回完整的原因代码列表。
oTopics := TsgcWSTopics.Create;
try
oTopics.Add('sensors/#', mtqsAtLeastOnce);
oTopics.Add('alerts/#', mtqsExactlyOnce);
MQTT.Subscribe(oTopics);
finally
oTopics.Free;
end;