TsgcWSPClient_MQTT › Gebeurtenissen › OnMQTTPublishEx
Gegenereerd bij inkomende PUBLISH; levert de payload als een TsgcWSMQTTPublishData (Value, Bytes, Stream) plus het ruwe TsgcWSMQTTMessage.
property OnMQTTPublishEx: TsgcWSMQTTPublishExEvent;
// TsgcWSMQTTPublishExEvent = procedure(Connection: TsgcWSConnection; aTopic: String; aData: TsgcWSMQTTPublishData; PublishProperties: TsgcWSMQTTPUBLISHProperties; aMessage: TsgcWSMQTTMessage) of object
—
Uitgebreide variant van OnMQTTPublish voor binaire payloads en low-level inspectie. Wordt geactiveerd voor elk inkomend PUBLISH nadat de QoS-handshake op transportniveau is voltooid (QoS 0 onmiddellijk; QoS 1 na PUBACK; QoS 2 na PUBREC → PUBREL → PUBCOMP). Parameters:
Value (String), Bytes (TBytes) en Stream (TMemoryStream). Kies degene die overeenkomt met uw inhoud (tekst, binaire blob, streamconsument).Verwerk ofwel OnMQTTPublish of OnMQTTPublishEx (het component levert inkomende berichten aan degene die is toegewezen); OnMQTTPublishEx heeft de voorkeur wanneer de payload niet gegarandeerd geldige UTF-8 is.
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;