Come abilitare WebSocket su Mosquitto in esecuzione su Windows?


8

Ho un broker Mosquitto attivo e funzionante sul mio computer Windows. Non ricordo se l'ho installato con il supporto Web Sockets (causa non sapevo cosa fosse, o se ne avevo bisogno). Ma visto che ora il mio requisito è usare JavaScript (Paho) ​​per connettermi a MQTT, voglio sapere come abilitare il supporto Web Socket per il mio broker MQTT esistente.

Ho provato a modificare il mosquitto.conffile aggiungendo queste righe al file

listener 9001
protocol websockets

ma non sembra funzionare. Allego un'immagine che potrebbe fornire un'immagine migliore:

Messaggi di errore del prompt dei comandi di Windows e mosquitto.conf

Non sono nemmeno sicuro dei comandi, ma sembrano funzionare con la porta predefinita 1883.

Quindi la domanda è: come faccio a farlo funzionare?

Risposte:


10

Poche cose:

  1. I comandi mosquittto_pube mosquitto_subnon supportano affatto WebSocket.

  2. Quando esegui mosquitto dalla riga di comando devi puntare esplicitamente al file di configurazione con l'opzione -c

    mosquitto -v -c /path/to/mosquitto.conf
    
  3. Le build di Windows disponibili dalle pagine di download di mosquitto.org non supportano WebSocket, quindi l'unico modo per avere il supporto di WebSocket è se hai creato mosquitto dal sorgente e lo abiliti (a partire dalla versione 1.5.1 le build di Windows ora contengono supporto per websocket)


Ciò significherebbe che javascript non sarà in grado di comunicare con nessun client pubsub? E, qualsiasi messaggio inviato al broker (pubblicare) da javascript su un determinato argomento non verrà ricevuto da mosquitto_sub che ascolta su quell'argomento?
Salim Shamim,

Senza alcun supporto WebSocket, il client Paho JavaScript non sarà in grado di connettersi al broker, quindi non sarà in grado di pubblicare o abbonarsi a nessun argomento
hardillb

Ok, per citare questo link ( eclipse.org/paho/clients/js ) "Paho JavaScript Client è una libreria client basata su browser MQTT scritta in Javascript che utilizza WebSocket per connettersi a un broker MQTT." e questo blog.ithasu.org/2016/05/… che spiega come abilitare WebSocket per Mosquitto su Linux. Non riesco a capire perché non sia possibile. Mi dispiace, forse sono solo perso.
Salim Shamim,

1
Ha già risposto, la build per Windows non ha WebSocket compilato. Dovrai
crearlo

È difficile da sentire. Ho cercato di costruire una versione di Mosquitto utilizzando vari riferimenti, ma mi sono sempre bloccato da qualche parte. Non sono stato in grado di trovare nessuno con un binario mosquitto abilitato per websocket (ospitato da Windows).
Eric Wu,

5

Come ha detto @hardlib, devi compilare mosquitto da fonti. Ci sono voluti alcuni tentativi ed errori per farlo funzionare su Windows, quindi ecco un riepilogo nel caso in cui aiuti qualcuno. Non esitare a correggerlo:

  • Prerequisiti

    • installa Visual Studio
    • installa cmake (l'ultima versione va bene)
    • installa OpenSSL su C: \ temp \ OpenSSL
    • decomprimere pthreads in C: \ pthreads
  • Costruisci libwebsocket:

    • git clone https://github.com/warmcat/libwebsockets.git e entrare nella direzione del progetto
    • assicurati di avere un commit stabile, (2.3 is 6cf0a981667f0d225a9cf2d7aecfd6f50be6c1fb)
    • mkdir build && cd build
    • cmake -G "Visual Studio 15" ..
    • apri il .sln in Visual Studio e imposta il tipo di build in modo da rilasciarlo e premi Ctrl + Maiusc + B
  • Costruisci mosquitto

    • git clone https://github.com/eclipse/mosquitto.git
    • cd mosquitto
    • mkdir build && cd build
    • cmake -G "Visual Studio 15" ..
    • cmake-gui
    • assicurati che l'opzione websockets sia selezionata e fai clic su generate
    • progetto aperto (ecco la parte hacky)
    • aggiungere le directory libwebsockets \ lib e libwebsocket \ build come directory di inclusione aggiuntive alla build di rilascio del progetto mosquitto e aggiungere libwebsockets \ build \ lib \ Release alle directory di libreria aggiuntive del linker.
    • commentare #define snprintf sprintf_sda config.h
    • commentare la timespecstruttura da pthreads.h
    • rimuove optimical.lib e debug.lib dalle librerie aggiuntive del progetto mosquitto_passwd
    • aggiungere #include <Windows.h>all'ifdef win32 di mosquitto_passwd.c
    • Seleziona la modalità di rilascio e premi Ctrl + Maiusc + B

3

A partire dalla 1.5.1 il pacchetto di Windows supporta websocket, consultare il log delle modifiche https://mosquitto.org/blog/ Devi solo modificare il file mosquitto.conf, specificare di utilizzare il protocollo websocket aggiungendo "protocol websocket" (vedi definizione intorno alla riga 145) e infine riavviare mosquitto se lo si esegue come servizio


Aggiungi listener 9001e protocol websocketsper il supporto e l'utilizzo di Websockt listener 1883e protocol mqttper consentire il traffico mqtt predefinito mosquitto.config
Thomas

2

Ho trovato una versione compilata di Mosquitto con WebSocket creata per Windows su GitHub che potrebbe essere utile se non si desidera creare il codice da soli.

Sebbene sia documentato in coreano, include anche una presentazione di PowerPoint con le istruzioni su come costruirla da soli, se non si desidera utilizzare i file binari precompilati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.