TsgcWSPClient_MQTT › Eventi › OnMQTTPublishEx
Si attiva alla ricezione di PUBLISH; consegna il payload come TsgcWSMQTTPublishData (Value, Bytes, Stream) insieme al TsgcWSMQTTMessage grezzo.
property OnMQTTPublishEx: TsgcWSMQTTPublishExEvent;
// TsgcWSMQTTPublishExEvent = procedure(Connection: TsgcWSConnection; aTopic: String; aData: TsgcWSMQTTPublishData; PublishProperties: TsgcWSMQTTPUBLISHProperties; aMessage: TsgcWSMQTTMessage) of object
—
Variante estesa di OnMQTTPublish per payload binari e ispezione a basso livello. Viene generato per ogni PUBLISH in arrivo dopo che l'handshake QoS a livello di trasporto è terminato (QoS 0 immediatamente; QoS 1 dopo PUBACK; QoS 2 dopo PUBREC → PUBREL → PUBCOMP). Parametri:
Value (String), Bytes (TBytes) e Stream (TMemoryStream). Scegliere quello più adatto al proprio contenuto (testo, blob binario, consumer di stream).Gestisca OnMQTTPublish oppure OnMQTTPublishEx (il componente consegna i messaggi in ingresso a quello assegnato); OnMQTTPublishEx è preferibile quando non è garantito che il payload sia UTF-8 valido.
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;