TsgcWSPClient_MQTT이벤트 › OnMQTTPublishEx

OnMQTTPublishEx Event

들어오는 PUBLISH에서 발생합니다. 페이로드를 TsgcWSMQTTPublishData(Value, Bytes, Stream)와 원시 TsgcWSMQTTMessage로 전달합니다.

구문

property OnMQTTPublishEx: TsgcWSMQTTPublishExEvent;
// TsgcWSMQTTPublishExEvent = procedure(Connection: TsgcWSConnection; aTopic: String; aData: TsgcWSMQTTPublishData; PublishProperties: TsgcWSMQTTPUBLISHProperties; aMessage: TsgcWSMQTTMessage) of object

기본값

설명

바이너리 페이로드 및 저수준 검사를 위한 OnMQTTPublish의 확장 변형. 전송 수준 QoS 핸드셰이크가 완료된 후 들어오는 모든 PUBLISH에 대해 발생합니다(QoS 0 즉시; QoS 1 PUBACK 후; QoS 2 PUBREC → PUBREL → PUBCOMP 후). 매개변수:

OnMQTTPublish 또는 OnMQTTPublishEx 중 하나를 처리하십시오(구성 요소는 수신 메시지를 할당된 쪽으로 전달합니다). 페이로드가 유효한 UTF-8임이 보장되지 않을 때는 OnMQTTPublishEx가 선호됩니다.

예제

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;

이벤트로 돌아가기