2016-10-14 14 views
7

Chciałbym uruchomić klienta mqtt w przeglądarce internetowej za pomocą gniazd internetowych z HTTPS. Dzięki HTTP nie mam problemu. Oto kod w przeglądarce internetowej podczas korzystania z protokołu HTTP.Podłącz klienta mqtt za pośrednictwem gniazd internetowych z HTTPS z przeglądarki

<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> 

W ten sposób uruchamiam samodzielny broker mosca, aby korzystać z protokołu HTTPS na stronach internetowych.

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

Jak zmienić kod klienta mqtt w przeglądarce, aby połączyć się z brokerem Mosca na stronach internetowych przez HTTPS?

+0

Wykorzystanie 'WSS: // 127 ...' zamiast 'ws ....' – Molda

+0

Molda, próbowałem tego, ale mam Błąd połączenia websocket do ' "wss: //127.0.0.1: 3000 /" nie powiodło się: uzgadnianie otwierania WebSocket zostało anulowane " – user781486

+0

Może to mieć coś wspólnego z certyfikatem SSL. Jak stworzyłeś, dla jakiej domeny? – Molda

Odpowiedz

6

Jak wyjaśniono w innych zadawanych pytaniach, przeglądarka internetowa ma swoją własną listę zaufanych certyfikatów CA. Twój podpisany certyfikat nie będzie na tej liście, więc połączenie nie powiedzie się.

Możesz zaimportować własne zaufane certyfikaty do przeglądarki, ale jak to zrobić, różni się w przypadku każdej przeglądarki i musisz to zrobić dla KAŻDEGO wystąpienia przeglądarki, co jest bardzo przydatne tylko w przypadku indywidualnych testów.

Jeśli chcesz zezwolić członkom społeczności (lub przeglądarkom, w których nie możesz zainstalować certyfikatu) na połączenie z brokerem, musisz uzyskać certyfikat od uznanego urzędu certyfikacji. Trzeba będzie albo za to zapłacić lub skorzystać z usługi jak http://letsencrypt.org

+0

Przeglądarka zwykle podpowie użytkownikowi, że dana strona nie jest bezpieczna podczas odwiedzania witryny HTTP, jeśli certyfikat jest samopodpisany. Połączenie nie powinno po prostu zawieść bez podpowiedzi. – user781486

+3

Przeglądarka nie wyświetla monitu, gdy jest inicjowana z javascript – hardillb

+0

hardillb, dziękuję. Odpowiedź jest teraz jasna. – user781486

2

masz problemy z powodu używania samopodpisanego certyfikatu Zamiast - można użyć:

  1. serwis CloudFlare jako front (z https i wss w wolnym planie). Przeczytaj o cloud flare
  2. Otrzymaj tymczasowe serie certyfikatów od letsencrypt (ma darmowe plany). Przeczytaj o letsencrypt
  3. Zdobądź certyfikat Trusted zapłacił
+0

Krótko mówiąc, Chmura nie działa w przypadku macierzystych połączeń MQTT – hardillb

Powiązane problemy