TsgcWSPClient_MQTT › Eventos › OnMQTTPublishEx
Disparado em um PUBLISH recebido; entrega o payload como um TsgcWSMQTTPublishData (Value, Bytes, Stream) mais a TsgcWSMQTTMessage bruta.
property OnMQTTPublishEx: TsgcWSMQTTPublishExEvent;
// TsgcWSMQTTPublishExEvent = procedure(Connection: TsgcWSConnection; aTopic: String; aData: TsgcWSMQTTPublishData; PublishProperties: TsgcWSMQTTPUBLISHProperties; aMessage: TsgcWSMQTTMessage) of object
—
Variante estendida de OnMQTTPublish para payloads binários e inspeção de baixo nível. Disparado para cada PUBLISH de entrada depois que o handshake de QoS em nível de transporte é concluído (QoS 0 imediatamente; QoS 1 após PUBACK; QoS 2 após PUBREC → PUBREL → PUBCOMP). Parâmetros:
Value (String), Bytes (TBytes) e Stream (TMemoryStream). Escolha o que corresponder ao seu conteúdo (texto, blob binário, consumidor de stream).Trate OnMQTTPublish ou OnMQTTPublishEx (o componente entrega as mensagens recebidas àquele que estiver atribuído); OnMQTTPublishEx é preferível quando não há garantia de que o payload seja UTF-8 válido.
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;