自 sgcWebSockets 4.4.4 起,MQTT 客户端新增了一个名为 PublishAndWait 的方法。此前,当客户端使用 QoS 1 或 2 发布消息时,唯一能确认服务器是否处理了该消息的方式,是通过异步事件 OnMQTTAcknowledgment 或 OnMQTTPubComp——这意味着客户端需要自行实现等待逻辑,以检查已发送的消息是否得到服务器确认。
现在,PublishAndWait 方法专门解决了这一问题:它在发布消息后持续等待,直到服务器向客户端发送确认;若在超时时间内未收到确认,该方法将返回 false。
PublishAndWait 的用法与普通的 Publish 方法相同,区别在于新增了一个 Timeout 参数——若在指定时间内服务器未响应,方法将返回 false。该参数的默认值为 10 秒。
if mqtt.PublishAndWait('topic', 'text') then
ShowMessage('Message processed')
else
ShowMessage('Message error');
