Задаваемый здесь вопрос немного вводит в заблуждение, поскольку на самом деле эти протоколы вообще нельзя сравнивать друг с другом. Они похожи на TCP и IP, слои друг над другом. [1]
Websockets - это низкоуровневый протокол, обеспечивающий то, чего не обеспечивает RESTful http своего «конкурента», который находится на том же уровне: всегда открытый канал без необходимости открывать и закрывать каждый запрос. [2]
MQTT предоставляет легкий способ публикации или подписки данных. Путаница может заключаться в том, что эти подписки являются своего рода каналами, но это другой тип канала. Чтобы установить постоянное открытое соединение в MQTT, вам необходимо одновременно использовать Websockets AND MQTT.
В IoT, как и в любом дизайне, вы должны выбрать, нужен ли вам поток (WebSockets vs RESTful), а в отношении MQTT вам, возможно, придется подумать, хотите ли вы использовать механизм подписки и публикации в своем приложении.
В некоторых случаях вы можете рассмотреть MQTT через WebSockets, если есть что-то общее. [3]
Ответ на вопрос:
Вы говорите, что у вас есть установка Rasperry Pi и несколько датчиков по всему месту. Если датчики находятся далеко от Rasperry со своими собственными контроллерами, вы можете использовать MQTT для сбора данных. Чтобы сохранить данные в облаке, отправьте данные в HTTP. В облаке предоставляем данные через отдых. [4]
Для веб-сокетов это не нужно, но если вы найдете это полезным, используйте его.
Источники:
[1] https://www.quora.com/What-are-the-pros-and-cons-of-WebSockets-versus-MQTT-as-real-time-web-infrastructure-for-the-Internet-of -Вещи
[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