La question posée ici est un peu trompeuse, car en réalité ces protocoles ne peuvent pas du tout être comparés ensemble. Ils sont comme TCP et IP, des couches les unes au-dessus des autres. [1]
Websockets est un protocole de bas niveau pour fournir des choses que son http RESTful «concurrent» qui est au même niveau ne fournit pas: un canal toujours ouvert sans besoin d'ouvrir et de fermer à chaque demande. [2]
MQTT fournit un moyen léger de publier ou de souscrire des données. La confusion peut être que ces abonnements sont une sorte de canaux, mais c'est un type de canal différent. Pour établir une connexion ouverte constante dans MQTT, vous avez besoin de Websockets ET MQTT en même temps.
Dans l'IoT, ainsi que dans toute conception, vous devez sélectionner si vous avez besoin d'un flux ou non (WebSockets vs RESTful) et à propos de MQTT, vous devrez peut-être vous demander si vous souhaitez un mécanisme d'abonnement et de publication sur votre application.
Dans certaines circonstances, vous pouvez envisager MQTT sur WebSockets, si quelque chose de courant existe. [3]
Réponse à la question:
Vous dites que vous avez une configuration d'un Rasperry Pi et plusieurs capteurs autour de l'endroit. Si les capteurs sont loin de Rasperry avec leurs propres contrôleurs, vous pouvez utiliser MQTT pour collecter les données. Pour stocker des données dans le cloud, envoyez les données en HTTP. Dans le cloud, fournissez des données par le repos. [4]
Pour les websockets il n'y a pas besoin, mais si vous le trouvez utile, utilisez-le.
Sources:
[1] https://www.quora.com/What-are-the-pros-and-cons-of-WebSockets-versus-MQTT-as-real-time-web-infrastructure-for-the-Internet-of -Des choses
[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