TsgcWSPClient_MQTT › Événements › OnMQTTPublishEx
Se déclenche sur les PUBLISH entrants ; livre la charge utile sous forme de TsgcWSMQTTPublishData (Value, Bytes, Stream) ainsi que le TsgcWSMQTTMessage brut.
property OnMQTTPublishEx: TsgcWSMQTTPublishExEvent;
// TsgcWSMQTTPublishExEvent = procedure(Connection: TsgcWSConnection; aTopic: String; aData: TsgcWSMQTTPublishData; PublishProperties: TsgcWSMQTTPUBLISHProperties; aMessage: TsgcWSMQTTMessage) of object
—
Variante étendue de OnMQTTPublish pour les charges utiles binaires et l'inspection bas niveau. Se déclenche pour chaque PUBLISH entrant après que la négociation QoS au niveau du transport est terminée (QoS 0 immédiatement ; QoS 1 après PUBACK ; QoS 2 après PUBREC → PUBREL → PUBCOMP). Paramètres :
Value (String), Bytes (TBytes) et Stream (TMemoryStream). Choisissez celui qui correspond à votre contenu (texte, blob binaire, consommateur de flux).
Gérez soit OnMQTTPublish soit OnMQTTPublishEx (le composant livre les messages entrants à celui qui est assigné) ; OnMQTTPublishEx est préféré lorsque la charge utile n'est pas garantie d'être de l'UTF-8 valide.
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;