TsgcWSPClient_MQTTMetodi › Publish

Publish Metodo

Pubblica un messaggio su un topic utilizzando i flag QoS e retain richiesti.

Overload

Overload 1

Sintassi

function Publish(const aTopic, aText: String; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil) : Word;

Parametri

NomeTipoDescrizione
aTopicconst StringNome completo del topic a cui il messaggio viene pubblicato (senza caratteri jolly).
aTextconst StringPayload UTF-8 inviato come corpo del pacchetto PUBLISH.
aQoSTmqttQoSGaranzia di consegna: mtqsAtMostOnce (0), mtqsAtLeastOnce (1) o mtqsExactlyOnce (2). Il valore predefinito è mtqsAtMostOnce.
aRetainBooleanSe True, il broker memorizza il messaggio come valore conservato per l'argomento e lo invia ai nuovi sottoscrittori.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesProprietà MQTT 5.0 opzionali (Content Type, Response Topic, Message Expiry, User Properties). Passi nil per ometterle.

Valore restituito

Identificatore di pacchetto assegnato al pacchetto PUBLISH; diverso da zero per QoS 1 e 2, zero per QoS 0. Utilizzarlo per correlare con OnMQTTPubAck, OnMQTTPubRec e OnMQTTPubComp. (Word)

Note

Overload testuale, ideale per documenti JSON e altri contenuti UTF-8. La chiamata ritorna non appena il pacchetto è stato consegnato al trasporto; le conferme QoS 1/2 vengono recapitate in modo asincrono. Richiede una sessione MQTT attiva stabilita con Connect.

Esempio

MQTT.Publish('sensors/temp', '{"value":22.5}', mtqsAtLeastOnce, True);

Sovraccarico 2

Sintassi

function Publish(const aTopic: String; const aStream: TStream; aQoS: TmqttQoS = mtqsAtMostOnce; aRetain: Boolean = False; const aPublishProperties: TsgcWSMQTTPublish_Properties = nil) : Word;

Parametri

NomeTipoDescrizione
aTopicconst StringNome completo dell'argomento a cui viene pubblicato il payload binario.
aStreamconst TStreamStream sorgente il cui contenuto integrale viene inviato verbatim come payload PUBLISH. La posizione viene salvata e ripristinata dal componente.
aQoSTmqttQoSGaranzia di consegna: mtqsAtMostOnce (0), mtqsAtLeastOnce (1) o mtqsExactlyOnce (2). Il valore predefinito è mtqsAtMostOnce.
aRetainBooleanQuando True, il broker memorizza il payload come valore retained per l'argomento.
aPublishPropertiesconst TsgcWSMQTTPublish_PropertiesProprietà MQTT 5.0 opzionali, tipicamente utilizzate per impostare il Content Type (ad esempio image/png) durante l'invio di dati binari.

Valore restituito

Identificatore del pacchetto per il pacchetto PUBLISH; zero per QoS 0. Consente la correlazione con gli eventi di conferma. (Word)

Note

Overload binario per file, frame protobuf, immagini e altri payload non testuali. Lo stream viene letto interamente prima della serializzazione, quindi i payload molto grandi dovrebbero essere suddivisi a livello applicativo per evitare allocazioni eccessive. Il comportamento di QoS, Retain e delle proprietà è identico all'overload testuale.

Esempio

oStream := TFileStream.Create('firmware.bin', fmOpenRead or fmShareDenyWrite);
try
  MQTT.Publish('devices/123/firmware', oStream, mtqsExactlyOnce);
finally
  oStream.Free;
end;

Torna ai Metodi