Wie aktiviere ich WebSockets unter Mosquitto unter Windows?


8

Ich habe einen Mosquitto-Broker auf meinem Windows-Computer eingerichtet. Ich kann mich nicht erinnern, ob ich es mit Web Sockets-Unterstützung installiert habe (weil ich nicht wusste, was das war oder ob ich es brauchte). Da ich jetzt JavaScript (Paho) ​​verwenden muss, um eine Verbindung zu MQTT herzustellen, möchte ich wissen, wie ich die Web Socket-Unterstützung für meinen vorhandenen MQTT-Broker aktivieren kann.

Ich habe versucht mosquitto.conf, die Datei zu bearbeiten , indem ich diese Zeilen zur Datei hinzugefügt habe

listener 9001
protocol websockets

scheint aber nicht zu funktionieren. Ich füge ein Bild hinzu, das ein besseres Bild liefern könnte:

Fehlermeldungen der Windows-Eingabeaufforderung und mosquitto.conf

Ich bin mir auch der Befehle nicht sehr sicher, aber sie scheinen mit dem Standardport 1883 zu funktionieren.

Die Frage ist also: Wie bringe ich es zum Laufen?

Antworten:


10

Ein paar Dinge:

  1. Die Befehle mosquittto_pubund mosquitto_subunterstützen WebSockets überhaupt nicht.

  2. Wenn Sie mosquitto über die Befehlszeile ausführen, müssen Sie mit der Option -c explizit auf die Konfigurationsdatei verweisen

    mosquitto -v -c /path/to/mosquitto.conf
    
  3. Die auf den Download-Seiten von mosquitto.org verfügbaren Windows-Builds unterstützen WebSockets nicht. Sie können WebSocket also nur unterstützen, wenn Sie Mosquitto selbst aus dem Quellcode erstellt und aktiviert haben (ab Version 1.5.1 enthalten die Windows-Builds jetzt Websocket-Unterstützung)


Würde das bedeuten, dass Javascript nicht mit einem Pubsub-Client kommunizieren kann? Und jede Nachricht, die per Javascript zu einem bestimmten Thema an den Broker (Publish) gesendet wird, wird von mosquitto_sub, die dieses Thema abhört, nicht empfangen?
Salim Shamim

Ohne WebSockets-Unterstützung kann der Paho-Javascript-Client überhaupt keine Verbindung zum Broker herstellen, sodass er keine Themen veröffentlichen oder abonnieren kann
hardillb

Ok, um diesen Link zu zitieren ( eclipse.org/paho/clients/js ) "Der Paho JavaScript Client ist eine in Javascript geschriebene MQTT-browserbasierte Clientbibliothek , die WebSockets verwendet, um eine Verbindung zu einem MQTT-Broker herzustellen." und dieses blog.ithasu.org/2016/05/…, in dem erklärt wird, wie WebSockets für Mosquitto unter Linux aktiviert werden. Ich kann nicht verstehen, warum es nicht möglich ist. Es tut mir leid, vielleicht bin ich einfach verloren.
Salim Shamim

1
Das ist bereits beantwortet, in dem Build für Windows sind keine WebSockets kompiliert. Sie müssen es selbst erstellen, wenn Sie WebSocket-Unterstützung wünschen
hardillb

Das ist schwer zu hören. Ich habe versucht, eine Version von Mosquitto unter Verwendung verschiedener Referenzen zu erstellen, aber ich stecke immer irgendwo fest. Ich konnte auch niemanden mit einer Websocket-fähigen Moskito-Binärdatei (Windows-gehostet) finden.
Eric Wu

5

Wie @hardlib sagte, müssen Sie Mücken aus Quellen zusammenstellen. Es hat einige Versuche und Irrtümer gekostet, bis es unter Windows funktioniert. Hier eine Zusammenfassung für den Fall, dass es jemandem hilft. Bitte zögern Sie nicht, dies zu korrigieren:

  • Voraussetzungen

    • Installieren Sie Visual Studio
    • cmake installieren (neueste Version ist in Ordnung)
    • Installieren Sie OpenSSL unter C: \ temp \ OpenSSL
    • entpacken Sie pthreads nach C: \ pthreads
  • Erstellen Sie libwebsockets:

    • git clone https://github.com/warmcat/libwebsockets.git und in das Projektverzeichnis einsteigen
    • Stellen Sie sicher, dass Sie sich in einem stabilen Commit befinden (2.3 ist 6cf0a981667f0d225a9cf2d7aecfd6f50be6c1fb)
    • mkdir build && cd build
    • cmake -G "Visual Studio 15" ..
    • Öffnen Sie die .sln-Datei in Visual Studio, stellen Sie den Build-Typ so ein, dass sie freigegeben wird, und drücken Sie Strg + Umschalt + B.
  • Mücke bauen

    • git clone https://github.com/eclipse/mosquitto.git
    • cd mosquitto
    • mkdir build && cd build
    • cmake -G "Visual Studio 15" ..
    • cmake-gui
    • Stellen Sie sicher, dass die Option Websockets aktiviert ist, und klicken Sie auf Generieren
    • offenes Projekt (hier kommt der hackige Teil)
    • Fügen Sie die Verzeichnisse libwebsockets \ lib und libwebsockets \ build als zusätzliche Include-Verzeichnisse zum Release-Build des mosquitto-Projekts hinzu und fügen Sie libwebsockets \ build \ lib \ Release zu den zusätzlichen Bibliotheksverzeichnissen des Linkers hinzu.
    • Kommentar #define snprintf sprintf_saus config.h
    • Kommentieren Sie die timespecStruktur von pthreads.h aus
    • Entfernen Sie optimized.lib und debug.lib aus den zusätzlichen Bibliotheken des mosquitto_passwd-Projekts
    • hinzufügen #include <Windows.h>zu win32 ifdef von mosquitto_passwd.c
    • Wählen Sie den Freigabemodus und drücken Sie Strg + Umschalt + B.

3

Ab 1.5.1 unterstützt das Windows-Paket Websocket, siehe Änderungsprotokoll https://mosquitto.org/blog/. Sie müssen nur die Datei mosquitto.conf bearbeiten und angeben, dass das Websocket-Protokoll verwendet werden soll, indem Sie "Protokoll-Websockets" hinzufügen (siehe Definition um die Zeile) 145) und starten Sie Moskito schließlich neu, wenn Sie es als Dienst ausführen


Fügen Sie listener 9001und protocol websocketsfür Websockt Unterstützung und Verwendung listener 1883und protocol mqttzu Ihrem Standard mqtt Verkehr mosquitto.config
Thomas

2

Ich habe eine kompilierte Version von Mosquitto mit WebSockets für Windows auf GitHub gefunden, die hilfreich sein kann, wenn Sie den Code nicht selbst erstellen möchten.

Während es auf Koreanisch dokumentiert ist, enthält es auch eine PowerPoint-Präsentation mit Anweisungen zum Erstellen selbst, wenn Sie die vorkompilierten Binärdateien nicht verwenden möchten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.