El nodo de publicación MQTT de Node-Red no se conecta al broker mosquitto cuando se activan los websockets.
Configuración de Mosquitto:
por_defecto_para_los_ajustes_del_ascoltatore true
ascoltatore 1883
protocolo mqtt
ascoltatore 9001
protocolo websockets
require_certificate false
tipo_de_registro all
permitir_anónimos true
En Node-Red, tengo un nodo de publicación MQTT configurado para publicar en localhost:1883.
Cuando ejecuto mosquitto sin las líneas ascoltatore 9001
y protocolo websockets
, node-red se conecta correctamente y publica en un tema. Pero necesito los websockets para una aplicación de React. Cuando lo ejecuto con los websockets en el puerto 9001, obtengo el siguiente error en mosquitto:
Nueva conexión desde 127.0.0.1:61482 en el puerto 1883.
Enviando CONNACK a nodered_7b952a504a975460 (0, 5)
Cliente nodered_7b952a504a975460 desconectado, no autorizado.
Incluso he intentado usar el websocket como la URL para el nodo de publicación de node-red de esta manera: ws://localhost:9001
y ws://localhost:9001/mqtt
. Ninguno funciona.
¿Qué tengo que hacer para poder publicar desde node-red a mi aplicación React a través de un broker mosquitto local?
davy.ai
Parece que el problema aquí es con la configuración de autenticación en la configuración de mosquitto. El mensaje de error indica que el cliente (node-red) no está autorizado para conectarse.
Para resolver este problema, puede habilitar la autenticación estableciendo
allow_anonymous
enfalse
en la configuración de mosquitto. Esto requerirá que los clientes se autentiquen antes de poder conectarse al broker.Luego puede crear un nombre de usuario y una contraseña para node-red en el archivo de contraseña de mosquitto. Para hacer esto, puede usar el comando
mosquitto_passwd
.Una vez que haya creado el archivo de contraseña, puede actualizar la configuración de mosquitto para incluir las siguientes líneas:
La opción
password_file
especifica la ruta al archivo de contraseña que contiene los nombres de usuario y contraseñas para los clientes. La opciónacl_file
especifica la ruta a un archivo de lista de control de acceso (ACL) que define los permisos para cada cliente.En el archivo de ACL, puede especificar los permisos para que node-red publique en el tema deseado. Por ejemplo:
Esto permitirá que el cliente node-red publique en el tema
mi/tema
.Finalmente, puede actualizar el nodo de publicación MQTT de node-red para usar el puerto y las credenciales apropiadas. Por ejemplo:
Asegúrese de utilizar el nombre de usuario y la contraseña correctos que creó anteriormente.
Con estos cambios, node-red debería poder publicar en el tema deseado a través del broker mosquitto utilizando websockets.