Tuve un problema al usar MQTT con el cliente Paho. Primero tengo que suscribirme para conocer el estado de cada interruptor y luego publicarlo, así que después de enviar un mensaje, debo esperar 7 segundos para recibir el estado actual, pero aquí, en mi caso, devuelve el estado del tema anterior y lo muestra en mi interruptor para que el estado de cambiar después de que lo encendí, se apagó luego de 7 segundos de transacciones y luego se ENCIENDE, mi pregunta es ¿cómo puedo manejar el estado de envío de Enabled1 hasta que recibí el actual (cómo puedo dejar de recibir mensajes de suscripción)?
aquí está mi código a continuación:
const client = new Paho.MQTT.Client(process.REACT_APP_HOST, Number(process.REACT_APP_PORT), clientID); if(client){ client.connect({ cleanSession : false, onSuccess : onConnect, userName: process.REACT_APP_DB_NAME, password: process.REACT_APP_PASSWORD, onFailure : onConnectionLost, }); } }, [client]) const onConnect = () => { client.subscribe(topic1, { qos: 1 }); }; const onMessageArrived = (payload)=> { if(payload.payloadString[0] == 1) { setSolutionPump('ON') setIsEnabled(true) } else if(payload.payloadString[0] == 0){ setSolutionPump('OFF') setIsEnabled(false) } const toggleSwitch1 = () => { const topic = "SolutionControl/WP"; if(!isEnabled1) { setIsEnabled1(previousState => !previousState); client.publish(topic, "on", 1); } else { setIsEnabled1(previousState => !previousState); client.publish(topic, "off", 1); } }