TsgcWSPClient_MQTTÉvénements › OnMQTTPublishEx

OnMQTTPublishEx Événement

Se déclenche sur les PUBLISH entrants ; livre la charge utile sous forme de TsgcWSMQTTPublishData (Value, Bytes, Stream) ainsi que le TsgcWSMQTTMessage brut.

Syntaxe

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

Valeur par défaut

Remarques

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 :

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.

Exemple

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;

Retour aux événements