Przedstawione tutaj pytanie jest nieco mylące, ponieważ w rzeczywistości tych protokołów w ogóle nie można porównywać razem. Są jak TCP i IP, warstwy nad sobą. [1]
Websockets to protokół niskiego poziomu, który zapewnia rzeczy, których nie zapewnia jego „konkurencyjny” RESTful http, który jest na tym samym poziomie: zawsze otwarty kanał bez potrzeby otwierania i zamykania na każde żądanie. [2]
MQTT zapewnia lekki sposób publikowania lub subskrybowania danych. Problemem może być to, że te subskrypcje są jakimś kanałem, ale jest to inny typ kanału. Aby uzyskać stałe otwarte połączenie w MQTT, potrzebujesz Websockets ORAZ MQTT w tym samym czasie.
W IoT, a także w dowolnym projekcie, musisz wybrać, czy potrzebujesz strumienia, czy nie (WebSockets vs. RESTful), a jeśli chodzi o MQTT, możesz pomyśleć, czy chcesz mieć subskrypcję i mechanizm publikowania w swojej aplikacji.
W niektórych okolicznościach możesz rozważyć użycie MQTT przez WebSockets, jeśli jest coś wspólnego. [3]
Odpowiedz na pytanie:
Mówisz, że masz konfigurację Rasperry Pi i kilka czujników w tym miejscu. Jeśli czujniki są dalekie od Rasperry z własnymi kontrolerami, możesz użyć MQTT do zbierania danych. Aby przechowywać dane w chmurze, wyślij dane w HTTP. W chmurze dostarczaj dane przez resztę. [4]
W przypadku gniazd sieciowych nie ma takiej potrzeby, ale jeśli uznasz to za przydatne, zrób to.
Źródła:
[1] https://www.quora.com/What-are-the-pros-and-cons-of-WebSockets-versus-MQTT-as-real-time-web-infrastructure-for-the-Internet-of -Rzeczy
[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