Was sind die Hauptunterschiede zwischen MQTT und Web Sockets?
Bei Verwendung von IoT für die Heimautomation - Steuern und Überwachen des Zugriffs über verschiedene Geräte. Welches Gerät sollte verwendet werden, wenn ein Zugriff auf die Rest-API und den Browser erforderlich ist.
Ich verwende Java (Pi4J Library) auf einem Raspberry Pi 2 B +.
Ich habe mehrere Sensoren wie Licht und Dunkel, Luftfeuchtigkeit, PID usw. eingerichtet.
Ich habe auch einen Cloud-Server, auf dem ich die Daten bei Bedarf senden kann.
communication
monitoring
mqtt
Shakti Phartiyal
quelle
quelle
Antworten:
Die Fragestellung hier ist etwas irreführend, da diese Protokolle eigentlich gar nicht miteinander verglichen werden können. Sie sind wie TCP und IP, Schichten übereinander. [1]
Websockets ist ein Low-Level-Protokoll, das Dinge bereitstellt, die der RESTful-HTTP seines Konkurrenten auf derselben Ebene nicht bereitstellt: ein immer offener Kanal, ohne dass bei jeder Anforderung ein Öffnen und Schließen erforderlich ist. [2]
MQTT bietet eine einfache Möglichkeit zum Veröffentlichen oder Abonnieren von Daten. Die Verwirrung kann sein, dass diese Abonnements eine Art von Kanälen sind, aber das ist eine andere Art von Kanal. Um eine konstant offene Verbindung in MQTT herzustellen, benötigen Sie gleichzeitig Websockets UND MQTT.
In IoT und in jedem Design müssen Sie auswählen, ob Sie einen Stream benötigen oder nicht (WebSockets vs RESTful). In Bezug auf MQTT müssen Sie möglicherweise überlegen, ob Sie ein Abonnement und einen Veröffentlichungsmechanismus für Ihre App wünschen.
Unter bestimmten Umständen können Sie MQTT über WebSockets in Betracht ziehen, wenn eine gemeinsame Sache vorliegt. [3]
Antwort auf die Frage:
Sie sagen, Sie haben einen Rasperry Pi und mehrere Sensoren in der Nähe. Wenn die Sensoren mit ihren eigenen Controllern von Rasperry weit entfernt sind, können Sie MQTT zum Erfassen der Daten verwenden. Senden Sie die Daten zum Speichern in der Cloud über HTTP. In der Cloud Daten durch Ruhe liefern. [4]
Für Websockets besteht keine Notwendigkeit, aber wenn Sie es nützlich finden, verwenden Sie es.
Quellen:
[1] https://www.quora.com -Dinge
[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
quelle
Sie sind insofern vergleichbar, als beide eine Vollduplex-Kommunikation ermöglichen, sodass der Server Daten sofort an den Client weiterleiten kann, ohne dass der Client sie abfragt (wie dies bei HTTP der Fall sein könnte).
Websockets ist jedoch für eine einfache Punkt-zu-Punkt-Verbindung zwischen einem Client und einem Server ausgelegt. MQTT überlagert das Senden grundlegender Nachrichten mit zusätzlichen Abstraktionen, sodass mehrere interessierte Parteien Nachrichten abonnieren können, die sie interessieren könnten. Nachrichten können daher nach 'Nachrichtenthema' weitergeleitet werden, sodass viele Clients eine fiktive Warteschlange gemeinsam nutzen können, in der ein Server alle Nachrichten von allen Clients abhören, aber auch nach Thema filtern kann.
MQTT verfügt über eine Reihe weiterer nützlicher Funktionen, z. B. beibehaltene Nachrichten, sodass Abonnenten die Nachricht sofort erhalten, und LWT (Last Will and Testament), eine Nachricht, die automatisch gesendet werden kann, wenn der Client die Verbindung abnormal trennt. Zusammenfassend lässt sich sagen, dass MQTT überlegen ist und Funktionen und Abstraktionen bietet, die ein einfaches Websocket nicht bietet.
quelle