TsgcWSPClient_MQTTEreignisse › OnMQTTPublishEx

OnMQTTPublishEx Ereignis

Wird bei eingehendem PUBLISH ausgelöst; liefert die Payload als TsgcWSMQTTPublishData (Value, Bytes, Stream) zusammen mit der rohen TsgcWSMQTTMessage.

Syntax

property OnMQTTPublishEx: TsgcWSMQTTPublishExEvent;
// TsgcWSMQTTPublishExEvent = procedure(Connection: TsgcWSConnection; aTopic: String; aData: TsgcWSMQTTPublishData; PublishProperties: TsgcWSMQTTPUBLISHProperties; aMessage: TsgcWSMQTTMessage) of object

Standardwert

Hinweise

Erweiterte Variante von OnMQTTPublish für binäre Nutzlasten und Low-Level-Inspektion. Wird für jedes eingehende PUBLISH ausgelöst, nachdem der QoS-Handshake auf Transportebene abgeschlossen ist (QoS 0 sofort; QoS 1 nach PUBACK; QoS 2 nach PUBREC → PUBREL → PUBCOMP). Parameter:

Behandeln Sie entweder OnMQTTPublish oder OnMQTTPublishEx (die Komponente stellt eingehende Nachrichten an den jeweils zugewiesenen Handler zu); OnMQTTPublishEx ist vorzuziehen, wenn nicht garantiert ist, dass die Nutzlast gültiges UTF-8 ist.

Beispiel

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;

Zurück zu Ereignissen