TsgcWSPClient_MQTT › イベント › OnMQTTPublishEx
受信した PUBLISH 時に発生します。ペイロードを TsgcWSMQTTPublishData (Value、Bytes、Stream) および生の TsgcWSMQTTMessage として配信します。
property OnMQTTPublishEx: TsgcWSMQTTPublishExEvent;
// TsgcWSMQTTPublishExEvent = procedure(Connection: TsgcWSConnection; aTopic: String; aData: TsgcWSMQTTPublishData; PublishProperties: TsgcWSMQTTPUBLISHProperties; aMessage: TsgcWSMQTTMessage) of object
—
バイナリペイロードと低レベル検査のための OnMQTTPublish の拡張バリアント。トランスポートレベルの QoS ハンドシェイクが完了した後、受信するすべての PUBLISH に対して発火します(QoS 0 は即座、QoS 1 は PUBACK 後、QoS 2 は PUBREC → PUBREL → PUBCOMP 後)。パラメーター:
Value (String)、Bytes (TBytes)、Stream (TMemoryStream)。コンテンツ(テキスト、バイナリブロブ、ストリームコンシューマー)に合うものを選択してください。OnMQTTPublish または OnMQTTPublishEx のどちらかを処理します (コンポーネントは割り当てられている方に受信メッセージを配信します)。ペイロードが有効な UTF-8 であることが保証されない場合は OnMQTTPublishEx が優先されます。
procedure TForm1.MQTTPublishEx(Connection: TsgcWSConnection;
aTopic: String; aData: TsgcWSMQTTPublishData;
PublishProperties: TsgcWSMQTTPUBLISHProperties;
aMessage: TsgcWSMQTTMessage);
var
vBytes: TBytes;
begin
Memo1.Lines.Add(Format('[%s] QoS=%d %d bytes',
[aTopic, Ord(aMessage.QoS), Length(aData.Bytes)]));
// read the payload as raw bytes (safe for binary content)
vBytes := aData.Bytes;
// or pull it through the stream API
aData.Stream.Position := 0;
SaveStreamToFile(aData.Stream, 'payload.bin');
end;