Depuis sgcWebSockets 4.4.4, le client MQTT dispose d'une nouvelle méthode appelée PublishAndWait. Jusqu'à présent, lorsqu'un client publiait un message avec les niveaux QoS 1 ou 2, le seul moyen de savoir si le message avait été traité par le serveur était d'utiliser les événements asynchrones OnMQTTAcknowledgment ou OnMQTTPubComp : le client devait donc implémenter sa propre méthode d'attente pour vérifier si le message envoyé avait été acquitté par le serveur.
Il existe maintenant une méthode dédiée, PublishAndWait, qui fait exactement cela : elle publie le message et attend que le serveur envoie un accusé de réception au client ; si le client ne reçoit rien après un timeout, la fonction renvoie false.
L'utilisation de PublishAndWait est identique à celle de la méthode Publish normale : tu disposes d'un nouveau paramètre Timeout ; la méthode renverra false si, après un certain temps, il n'y a pas de réponse du serveur. Par défaut, cette valeur est de 10 secondes.
if mqtt.PublishAndWait('topic', 'text') then
ShowMessage('Message processed')
else
ShowMessage('Message error');
