2015-06-03 18 views
28

Was sind Vorteile von MQTT über WebSocket im Vergleich zu direkten MQTT?Direkt MQTT vs MQTT über WebSocket

Ich denke über die Verwendung von MQTT in meinem Projekt nach und deshalb möchte ich wissen, warum einige Leute MQTT anstelle von direkt MQTT über WebSocket wählen.

Antwort

18

Sie sollten MQTT nur über Websockets ausführen, wenn Sie Nachrichten direkt in Webapps (auf der Seite) veröffentlichen/subskribieren möchten.

Grundsätzlich würde ich pure MQTT für alles und nur die Websockets hinzufügen, wenn Sie es wirklich brauchen.

Für alle Nicht-Browsersprachen verwenden die MQTT-Clientbibliotheken nur native MQTT. Für Javascript gibt es sowohl eine reine MQTT-Bibliothek als auch die Paho in der Seitenbibliothek, die Websockets verwendet.

13

MQTT über Websockets ist perfekt, wenn eine bestimmte Webseite der sendende oder der empfangende MQTT-Client ist.

Eine gute Übersicht über die Möglichkeiten von MQTT über Websockets kann here gefunden werden.

11

Zwei Hauptgründe für die Verwendung von MQTT über Websockets (was effektiv bedeutet, HTTP/HTTPS geht über):

  • Web-Anwendungen (die in einem Browser ausgeführt wird - zB in JavaScript geschrieben)
  • Alle anderen Anwendungen, die Ich möchte den Port 1883/8883 nicht verwenden und möchte stattdessen HTTP/HTTPS verwenden - dies könnte so sein, dass die Wahrscheinlichkeit einer Blockierung durch eine Firewall (z. B. in einem Unternehmensnetzwerk) geringer ist als bei den meisten Firewalls lassen Sie HTTP-Verkehr durch

Wenn Sie das tun nicht über die oben genannten brauchen oder sich Sorgen, verwenden Sie „direkt“ MQTT:

  • es effizienter ist,
  • mehr Client-Bibliotheken für verschiedene Sprachen sind, die
+1

sagen "die HTTP/HTTPS geht über effektiv bedeutet" ist nicht ganz richtig. Websockets sind vorteilhaft, da sie im Wesentlichen nicht HTTP/HTTPS und den impliziten Overhead verwenden. Lesen Sie weiter (HTML5 WebSocket: Ein Quantensprung in der Skalierbarkeit für das Web) [http://websocket.org/quantum.html] für alle Details. – Sean

9

mit „direkten“ MQTT arbeiten MQTT ist ein Protokoll, das folgende unterstützt:

  • Bietet Publish/subscribe-Mechanismus
  • Quality of Service Politik
  • Haben minimalen Overhead in der Kommunikation
  • Speziell für Schmalband-Kommunikationskanal und
    eingeschränkten Geräten.

Je nach Gerät ist eine Implementierung verfügbar.

Browser: Es verwendet Websockets. Websocket bietet Browsern die Möglichkeit, eine Vollduplex-Kommunikation einzurichten. Es gibt eine Javascript-Bibliothek, um die MQTT-Funktionalität zu implementieren, siehe Eclipse Paho JavaScript Client

Android: Ihre ist eine MQTT-Client-Bibliothek in Java für die Entwicklung von Anwendungen auf Android geschrieben.Siehe Eclipse Paho Android Service

Es hängt also vom Gerät ab, das diese Funktionalität verwenden wird. Für Normen und Spezifikationen besuchen Sie bitte MQTT Version 3.1.1

In der Hoffnung, dies hilft.

Prost!

3

MQTT über Web-Sockets ist auch hilfreich, wenn die Anwendung hinter einer Firewall ausgeführt wird, die nur 443 und 80 Datenverkehr zulässt. Und Sie haben keine Kontrolle über die Richtlinien der Firewall.

0

Mit MQTT über Websockets kann jeder Browser ein MQTT-Gerät sein.

Aufgrund des Publish/Subscribe-Musters von MQTT erhalten Sie einen Echtzeit-Push an Ihren Browser, wenn ein Ereignis - buchstäblich überall auf der Welt - auftritt, solange Sie das richtige Thema abonnieren.

Bei MQTT über WebSockets bildet die Websockets-Verbindung eine äußere Leitung für das MQTT-Protokoll. Der Server/Broker platziert das MQTT-Paket in ein Websocket-Paket und sendet es an den Client/Server. Der Client/Server entpackt das MQTT-Paket aus dem Websocket-Paket und verarbeitet es dann als normales MQTT-Paket.

enter image description here

Darüber hinaus hat es einen großen Einfluss auf Internet der Dinge. Bitte lesen Sie die folgenden Dokumentationen für weitere Details.

SAP Cloud Platform Internet of Things

AWS IoT

MQTT over Websockets with HiveMQ