websockets vue try node hivemq node.js https websocket mqtt mosca

node.js - vue - Conecte el cliente mqtt a través de sockets web con HTTPS desde el navegador



mqtt vs websockets (2)

Me gustaría ejecutar un cliente mqtt en un navegador web usando sockets web con HTTPS. Con HTTP, no tengo ningún problema. Aquí está el código en el navegador web cuando se usa HTTP.

<script> var client = mqtt.connect( ''wss://127.0.0.1:3000'', {username:''test_user'', password:''test_password''} ); client.subscribe("mqtt/test"); client.on("message", function(topic, payload) { alert([topic, payload].join(": ")); client.end(); }); client.publish("mqtt/test", "testing hello world!"); </script>

Así es como comienzo el intermediario de mosca independiente para usar HTTPS en websockets.

mosca --very-verbose --key ./tls-key.pem --cert ./tls-cert.pem --credentials ./credentials.json --https-port 3000 --https-bundle --https-static ./ | pino

¿Cómo debo cambiar mi código de cliente mqtt en el navegador para conectarme con el intermediario Mosca en websockets a través de HTTPS?


Como se discutió en las otras preguntas que ha realizado, el navegador web tiene su propia lista de certificados de CA de confianza, su certificado autofirmado no estará en esta lista, por lo que la conexión va a fallar.

Puede importar sus propios certificados de confianza en su navegador, pero la forma de hacerlo difiere con cada navegador y debe hacerlo para CADA instancia del navegador, por lo que solo es realmente útil para las pruebas individuales.

Si necesita permitir que los miembros del público (o navegadores en los que no puede instalar su certificado) se conecten con su corredor, deberá obtener un certificado de una CA reconocida. Tendrá que pagar por esto o usar un servicio como http://letsencrypt.org


Tiene problemas debido al uso de un certificado autofirmado. En su lugar, puede usar:

  1. servicio cloudflare como front (con https y wss en plan libre). Lea sobre la llamarada de la nube
  2. Obtenga los sertificados temporales de letsencrypt (tiene un plan gratuito). Lea acerca de letsencrypt
  3. Obtener certificado pagado de confianza