MQTT publicar mensaje y esperar respuesta

· Características

Desde sgcWebSockets 4.4.4 el cliente MQTT tiene un nuevo método llamado PublishAndWait. Hasta ahora, cuando un cliente publicaba un mensaje usando niveles QoS 1 o 2, la única forma de saber si el mensaje fue procesado por el servidor era usando los eventos asíncronos OnMQTTAcknowledgment u OnMQTTPubComp; esto significa que el cliente debía implementar su propio método de espera para comprobar si el mensaje enviado fue confirmado por el servidor.

Ahora hay un método específico, PublishAndWait, que hace exactamente eso: publica el mensaje y espera hasta que el servidor envía un acknowledgment al cliente; si el cliente no lo recibe tras un timeout, la función devolverá false.

El uso de PublishAndWait es el mismo que el del método Publish normal; ahora tienes un nuevo parámetro llamado Timeout, donde el método devolverá el valor false si tras cierto período de tiempo no hay respuesta del servidor. Por defecto este valor es de 10 segundos.

if mqtt.PublishAndWait('topic', 'text') then
  ShowMessage('Message processed')
else
  ShowMessage('Message error');