Quais são as principais diferenças entre o MQTT e os soquetes da Web?
Ao usar a IoT para automação residencial - controle e monitore o acesso em diferentes dispositivos, qual deles deve ser usado quando a API Rest Rest e a acessibilidade baseada no navegador forem necessárias.
Estou usando Java (Pi4J Library) em um Raspberry Pi 2 B +.
Eu tenho uma configuração de vários sensores, como claro e escuro, umidade, PID etc.
Eu também tenho um servidor em nuvem onde posso enviar os dados, se necessário.
communication
monitoring
mqtt
Shakti Phartiyal
fonte
fonte
Respostas:
A configuração das perguntas aqui é um pouco enganadora, porque na verdade esses protocolos não podem ser comparados. Eles são como TCP e IP, camadas acima uma da outra. [1]
Websockets é um protocolo de baixo nível para fornecer coisas que o http RESTful 'concorrente' que está no mesmo nível não fornece: um canal sempre aberto sem a necessidade de abrir e fechar a cada solicitação. [2]
O MQTT fornece uma maneira leve de publicar ou assinar dados. A confusão pode ser que essas assinaturas sejam algum tipo de canal, mas esse é um tipo diferente de canal. Para estabelecer uma conexão aberta constante no MQTT, você precisa de Websockets AND MQTT ao mesmo tempo.
Na IoT, assim como em qualquer design, é necessário selecionar se você precisa de um fluxo ou não (WebSockets vs RESTful) e sobre o MQTT, talvez seja necessário pensar se deseja um mecanismo de assinatura e publicação em seu aplicativo.
Em algumas circunstâncias, você pode considerar o MQTT sobre WebSockets, se houver algo em comum. [3]
Responda a pergunta:
Você diz que tem uma configuração de um Rasperry Pi e vários sensores ao redor do local. Se os sensores estiverem longe do Rasperry com seus próprios controladores, você poderá usar o MQTT para coletar os dados. Para armazenar dados na nuvem, envie os dados em HTTP. Na nuvem, forneça dados através do descanso. [4]
Para websockets, não há necessidade, mas se você achar útil, use-o.
Fontes:
[1] https://www.quora.com/What-are-the-pros-and-cons-of-WebSockets-versus-MQTT-as-real-time-web-infrastructure-for-the-Internet-of -Coisas
[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
fonte
Eles são comparáveis, pois ambos permitem que você tenha comunicação full-duplex, de modo que o servidor possa passar dados imediatamente para o cliente, sem que o cliente faça pesquisas (como pode ser no HTTP).
No entanto, o Websockets foi projetado para uma conexão ponto a ponto simples entre um cliente e um servidor. O MQTT coloca abstrações extras sobre o envio básico de mensagens, para que várias partes interessadas possam assinar mensagens que possam interessá-las. Portanto, as mensagens podem ser roteadas por 'tópico da mensagem' para que muitos clientes possam compartilhar uma fila nocional, onde um servidor pode optar por ouvir todas as mensagens de todos os clientes, mas também pode filtrar por tópico.
O MQTT possui uma variedade de outros recursos úteis, por exemplo, mensagens retidas, para que os assinantes recebam a mensagem imediatamente, e o LWT (Last Will and Testament), que é uma mensagem que pode ser enviada automaticamente se o cliente se desconectar anormalmente. Em resumo, o MQTT é 'mais alto na pilha', oferecendo recursos e abstrações que um simples Websocket não oferece.
fonte