TsgcWSPClient_MQTT메서드 › Publish

Publish Method

요청된 QoS 및 retain 플래그를 사용하여 topic에 메시지를 게시합니다.

Overloads

오버로드 1

구문

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

Parameters

NameType설명
aTopicconst String메시지가 게시되는 정규화된 topic 이름(와일드카드 없음)입니다.
aTextconst StringPUBLISH 패킷 본문으로 전송되는 UTF-8 페이로드입니다.
aQoSTmqttQoS전달 보장: mtqsAtMostOnce (0), mtqsAtLeastOnce (1) 또는 mtqsExactlyOnce (2). 기본값은 mtqsAtMostOnce입니다.
aRetainBooleanTrue인 경우 브로커는 메시지를 토픽의 유지된 값으로 저장하고 새 구독자에게 전달합니다.
aPublishPropertiesconst TsgcWSMQTTPublish_Properties선택적 MQTT 5.0 속성(Content Type, Response Topic, Message Expiry, User Properties). 생략하려면 nil을 전달하십시오.

반환 값

PUBLISH 패킷에 할당된 packet 식별자입니다. QoS 1 및 2의 경우 0이 아니며, QoS 0의 경우 0입니다. OnMQTTPubAck, OnMQTTPubRec, OnMQTTPubComp와 상관시키는 데 사용하십시오. (Word)

설명

JSON 문서 및 기타 UTF-8 콘텐츠에 이상적인 텍스트 오버로드입니다. 호출은 패킷이 전송 계층에 전달되는 즉시 반환됩니다. QoS 1/2 승인은 비동기적으로 전달됩니다. Connect로 설정된 활성 MQTT 세션이 필요합니다.

예제

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

Overload 2

구문

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

Parameters

NameType설명
aTopicconst String바이너리 페이로드가 게시되는 정규화된 토픽 이름입니다.
aStreamconst TStream전체 내용이 PUBLISH 페이로드로 그대로 전송되는 소스 스트림입니다. Position은 구성 요소에 의해 저장되고 복원됩니다.
aQoSTmqttQoS전달 보장: mtqsAtMostOnce (0), mtqsAtLeastOnce (1) 또는 mtqsExactlyOnce (2). 기본값은 mtqsAtMostOnce입니다.
aRetainBooleanTrue인 경우 브로커는 페이로드를 토픽의 retained 값으로 저장합니다.
aPublishPropertiesconst TsgcWSMQTTPublish_Properties선택적 MQTT 5.0 속성. 일반적으로 바이너리 데이터를 전송할 때 Content Type(예: image/png)을 설정하는 데 사용됩니다.

반환 값

PUBLISH 패킷의 패킷 식별자입니다. QoS 0의 경우 0입니다. 확인 이벤트와의 상관 관계를 가능하게 합니다. (Word)

설명

파일, protobuf 프레임, 이미지 및 기타 비텍스트 페이로드를 위한 바이너리 오버로드입니다. 스트림은 직렬화 전에 전체가 읽히므로 매우 큰 페이로드는 큰 할당을 피하기 위해 애플리케이션 계층에서 청크화해야 합니다. QoS, Retain 및 속성의 동작은 텍스트 오버로드와 동일합니다.

예제

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

메서드로 돌아가기