TsgcWSPClient_MQTTイベント › OnMQTTPublishEx

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 後)。パラメーター:

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;

イベントに戻る