TsgcWSPClient_MQTT事件 › OnMQTTPublishEx

OnMQTTPublishEx 事件

在收到 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 握手完成后(QoS 0 立即触发;QoS 1 在 PUBACK 后触发;QoS 2 在 PUBREC → PUBREL → PUBCOMP 后触发),对每个传入的 PUBLISH 触发。参数:

选择处理 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;

返回事件