TsgcWSPClient_MQTT › メソッド › Publish
リクエストされた QoS と retain フラグを使用してトピックにメッセージをパブリッシュします。
function Publish(const aTopic, aText: String; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil) : Word;
| 名前 | タイプ | 説明 |
|---|---|---|
aTopic | const String | メッセージがパブリッシュされる完全修飾トピック名(ワイルドカードなし)。 |
aText | const String | PUBLISH パケットボディとして送信される UTF-8 ペイロード。 |
aQoS | TmqttQoS | 配信保証: mtqsAtMostOnce (0)、mtqsAtLeastOnce (1)、またはmtqsExactlyOnce (2)。デフォルトはmtqsAtMostOnceです。 |
aRetain | Boolean | Trueの場合、ブローカーはメッセージをトピックの保持値として保存し、新しいサブスクライバーに転送します。 |
aPublishProperties | const TsgcWSMQTTPublish_Properties | オプションの MQTT 5.0 プロパティ (コンテンツタイプ、応答トピック、メッセージ有効期限、ユーザープロパティ)。省略する場合は nil を渡します。 |
PUBLISH パケットに割り当てられたパケット識別子。QoS 1 および 2 では 0 以外、QoS 0 では 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 の場合、ブローカーはペイロードをトピックの保持値として保存します。 |
aPublishProperties | const TsgcWSMQTTPublish_Properties | オプションの MQTT 5.0 プロパティ。通常、バイナリデータを送信する際のコンテンツタイプ (例: image/png) を設定するために使用します。 |
PUBLISH パケットのパケット識別子。QoS 0 の場合はゼロ。確認応答イベントとの相関を可能にします。(Word)
ファイル、プロトバフフレーム、画像、その他の非テキストペイロード用のバイナリオーバーロード。シリアライズ前にストリームが全体的に読み込まれるため、非常に大きなペイロードはアプリケーションレイヤーでチャンク化して大きなアロケーションを避ける必要があります。QoS、Retain、プロパティの動作はテキストオーバーロードと同一です。
oStream := TFileStream.Create('firmware.bin', fmOpenRead or fmShareDenyWrite);
try
MQTT.Publish('devices/123/firmware', oStream, mtqsExactlyOnce);
finally
oStream.Free;
end;