TsgcWSPClient_MQTT › Ereignisse › OnMQTTPublishEx
Wird bei eingehendem PUBLISH ausgelöst; liefert die Payload als TsgcWSMQTTPublishData (Value, Bytes, Stream) zusammen mit der rohen TsgcWSMQTTMessage.
property OnMQTTPublishEx: TsgcWSMQTTPublishExEvent;
// TsgcWSMQTTPublishExEvent = procedure(Connection: TsgcWSConnection; aTopic: String; aData: TsgcWSMQTTPublishData; PublishProperties: TsgcWSMQTTPUBLISHProperties; aMessage: TsgcWSMQTTMessage) of object
—
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:
Value (String), Bytes (TBytes) und Stream (TMemoryStream). Wählen Sie die Variante, die zu Ihrem Inhalt passt (Text, binärer Blob, Stream-Consumer).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.
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;