Estoy tratando de configurar un corredor mqtt simple y acceder a él desde una página web. He tenido bastante suerte 0.
Tengo mosquitto 2.0.14 descargado y ejecutándose. Aquí está mi archivo de configuración:
listener 1883 listener 9001 protocol websockets
Esto genera el siguiente registro cuando ejecuto mosquitto -c mosquitto_conf -v
1637948154: mosquitto version 2.0.14 starting 1637948154: Config loaded from mosquitto.conf. 1637948154: Opening ipv6 listen socket on port 1883. 1637948154: Opening ipv4 listen socket on port 1883. 1637948154: Opening websockets listen socket on port 9001. 1637948154: mosquitto version 2.0.14 running
Aquí está mi archivo html, que simplemente abro en el navegador. Utiliza el cliente js de Paho.:
<html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script> <script type="text/javascript" language="javascript"> var mqtt; var reconnectTimeout = 2000; var host = "192.168.1.94"; var port = 9001; function onConnect() { console.log("Connected"); message = new Paho.MQTT.Message("hello"); message.destinationName = "sensor1"; mqtt.send(message); } function mqttConnect() { console.log("Connecting to " + host + ":" + port); mqtt = new Paho.MQTT.Client(host, port, "clientjs"); var options = { timeout: 3, onSuccess: onConnect, }; mqtt.connect(options); } </script> </head> <body> <script> mqttConnect(); </script> </body> </html>
Estoy usando una guía de este sitio web: http://www.steves-internet-guide.com/using-javascript-mqtt-client-websockets/
Aparece el siguiente error de consola en el navegador:
WebSocket connection to 'ws://127.0.0.1:9001/mqtt' failed
He tenido dificultades para encontrar un tutorial actualizado que funcione. Mi objetivo final es crear una aplicación de reacción que se conecte a un corredor mqtt a través de websockets y reciba mensajes para actualizar el estado en redux.
Preguntas: ¿Cómo hago para que el cliente js se conecte? ¿Cómo configuro el host para mosquitto? ¿Puedo usar un host diferente como myhost.local o estoy atascado usando 127.0.0.1 o lo que sea que veo cuando ejecuto ipconfig (estoy en Windows)?
Debe agregar allow_anonymous true
para permitir que los usuarios se conecten sin proporcionar un nombre de usuario/contraseña.
Esto es parte del conjunto de cambios introducidos en v2.0 para mejorar la postura de seguridad predeterminada de mosquitto desde el primer momento.