TsgcWSPClient_MQTT › Zdarzenia › OnMQTTPublishEx
Wywoływane po nadejściu pakietu PUBLISH; dostarcza ładunek jako obiekt TsgcWSMQTTPublishData (Value, Bytes, Stream) oraz nieprzetworzoną wiadomość TsgcWSMQTTMessage.
property OnMQTTPublishEx: TsgcWSMQTTPublishExEvent;
// TsgcWSMQTTPublishExEvent = procedure(Connection: TsgcWSConnection; aTopic: String; aData: TsgcWSMQTTPublishData; PublishProperties: TsgcWSMQTTPUBLISHProperties; aMessage: TsgcWSMQTTMessage) of object
—
Rozszerzony wariant zdarzenia OnMQTTPublish dla binarnych ładunków i niskopoziomowej inspekcji. Wywoływane dla każdego przychodzącego komunikatu PUBLISH po zakończeniu uzgadniania QoS na poziomie transportu (QoS 0 natychmiast; QoS 1 po PUBACK; QoS 2 po PUBREC → PUBREL → PUBCOMP). Parametry:
Value (String), Bytes (TBytes) i Stream (TMemoryStream). Należy wybrać ten, który odpowiada zawartości (tekst, dane binarne, konsument strumienia).Należy obsługiwać OnMQTTPublish lub OnMQTTPublishEx (komponent dostarcza przychodzące wiadomości do tego, które jest przypisane); OnMQTTPublishEx jest preferowane, gdy ładunek nie jest gwarantowanym prawidłowym UTF-8.
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;