L'impostazione della domanda qui è un po 'fuorviante, perché in realtà questi protocolli non possono assolutamente essere confrontati insieme. Sono come TCP e IP, strati uno sopra l'altro. [1]
Websocket è un protocollo di basso livello per fornire cose che il suo http RESTful 'concorrente' allo stesso livello non fornisce: un canale sempre aperto senza necessità di aprire e chiudere ad ogni richiesta. [2]
MQTT offre un modo leggero per pubblicare o sottoscrivere dati. La confusione potrebbe essere che tali abbonamenti siano una sorta di canali, ma questo è un diverso tipo di canale. Per stabilire una connessione aperta costante in MQTT sono necessari Websocket E MQTT contemporaneamente.
In IoT, così come in qualsiasi progetto, devi selezionare se hai bisogno di un flusso o meno (WebSocket vs RESTful) e su MQTT potresti dover pensare se vuoi un abbonamento e un meccanismo di pubblicazione sulla tua app.
In alcune circostanze puoi considerare MQTT su WebSocket, se c'è qualcosa di comune in giro. [3]
Rispondi alla domanda:
Dici di avere una configurazione di un Rasperry Pi e diversi sensori in tutto il luogo. Se i sensori sono lontani da Rasperry con i propri controller, è possibile utilizzare MQTT per raccogliere i dati. Per archiviare i dati nel cloud, inviare i dati in HTTP. Nel cloud fornire dati attraverso il resto. [4]
Per i websocket non è necessario, ma se lo trovi utile, usalo.
fonti:
[1] https://www.quora.com/What-are-the-pros-and-cons-of-WebSockets-versus-MQTT-as-real-time-web-infrastructure-for-the-Internet-of -Cose
[2] https://www.pubnub.com/blog/2015-01-05-websockets-vs-rest-api-understanding-the-difference/
[3] /programming/30624897/direct-mqtt-vs-mqtt-over-websocket
[4] http://www.theinternetofthings.eu/antonio-grasso-mqtt-vs-http-what-best-protocol-iot