Ab sgcWebSockets 4.4.4 verfügt der MQTT-Client über eine neue Methode namens PublishAndWait. Bislang gab es, wenn ein Client eine Nachricht mit QoS-Stufe 1 oder 2 veröffentlichte, nur die Möglichkeit, über die asynchronen Ereignisse OnMQTTAcknowledgment oder OnMQTTPubComp zu erfahren, ob die Nachricht vom Server verarbeitet wurde. Der Client musste also eine eigene Warteroutine implementieren, um zu prüfen, ob die gesendete Nachricht vom Server bestätigt wurde.
Jetzt gibt es eine spezifische Methode, PublishAndWait, die genau das tut: Sie veröffentlicht die Nachricht und wartet, bis der Server eine Bestätigung an den Client sendet. Erhält der Client innerhalb eines Timeouts keine Bestätigung, gibt die Funktion false zurück.
Die Verwendung von PublishAndWait entspricht der normalen Publish-Methode, du hast jetzt einen neuen Parameter namens Timeout: die Methode gibt false zurück, wenn nach einem bestimmten Zeitraum keine Antwort vom Server vorliegt. Standardmäßig beträgt dieser Wert 10 Sekunden.
if mqtt.PublishAndWait('topic', 'text') then
ShowMessage('Message processed')
else
ShowMessage('Message error');
