TsgcWSPClient_MQTT › Olaylar › OnMQTTPublishEx
Gelen PUBLISH'te tetiklenir; yükü ham TsgcWSMQTTMessage ile birlikte bir TsgcWSMQTTPublishData (Value, Bytes, Stream) olarak teslim eder.
property OnMQTTPublishEx: TsgcWSMQTTPublishExEvent;
// TsgcWSMQTTPublishExEvent = procedure(Connection: TsgcWSConnection; aTopic: String; aData: TsgcWSMQTTPublishData; PublishProperties: TsgcWSMQTTPUBLISHProperties; aMessage: TsgcWSMQTTMessage) of object
—
İkili yükler ve düşük seviyeli inceleme için OnMQTTPublish'in genişletilmiş varyantı. Taşıma düzeyindeki QoS handshake'i bittikten sonra her gelen PUBLISH için tetiklenir (QoS 0 hemen; QoS 1 PUBACK'tan sonra; QoS 2 PUBREC → PUBREL → PUBCOMP'tan sonra). Parametreler:
Value (String), Bytes (TBytes) ve Stream (TMemoryStream). İçeriğinize uyanı seçin (metin, ikili blok, stream tüketicisi).OnMQTTPublish veya OnMQTTPublishEx'ten birini işleyin (bileşen gelen mesajları hangisi atanmışsa ona teslim eder); yük geçerli UTF-8 olduğu garanti edilmediğinde OnMQTTPublishEx tercih edilir.
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;