web-dev-qa-db-fra.com

Direct MQTT vs MQTT sur WebSocket

Quels sont les avantages de MQTT sur WebSocket par rapport à MQTT direct?

J'envisage d'utiliser MQTT dans mon projet et je souhaite donc savoir pourquoi certaines personnes choisissent MQTT plutôt que WebSocket au lieu de MQTT direct.

50

Vous ne devriez avoir besoin d’exécuter MQTT sur des websockets que si vous avez l’intention de publier/abonner des messages directement à partir de webapps (dans la page).

Fondamentalement, je lancerais purement MQTT pour tout et n’ajouterais que les websockets si vous en avez réellement besoin.

Pour toutes les langues de navigateur nulles, les bibliothèques clientes MQTT utilisent uniquement MQTT natif. Pour Javascript, il existe à la fois une bibliothèque MQTT pure et la bibliothèque de pages Paho utilisant des websockets.

Édition: le cas d'utilisation de la tunnellisation du pare-feu est une raison valable pour utiliser MQTT sur des Websockets et, depuis l'écriture de cette réponse, de plus en plus de bibliothèques client Web/JavaScript non prises en charge.

29
hardillb

Deux raisons principales pour utiliser MQTT sur Websockets (ce qui signifie effectivement passer par HTTP/HTTPS):

  • Applications Web (fonctionnant dans un navigateur - écrit en JavaScript, par exemple)
  • Toute autre application qui ne souhaite pas utiliser le port 1883/8883 et souhaite utiliser HTTP/HTTPS à la place, ce qui pourrait réduire le risque d'être bloqué par un pare-feu (par exemple, dans un réseau d'entreprise), comme la plupart des pare-feu laisseront passer le trafic HTTP

Si vous n'avez pas besoin ou ne vous inquiétez pas à propos de ce qui précède, utilisez MQTT "direct":

  • c'est plus efficace
  • il y a plus de bibliothèques clientes pour différentes langues qui fonctionnent avec MQTT "direct"
18
user5762813

MQTT over websockets est idéal si une page Web donnée est le client MQTT expéditeur ou destinataire.

Un bon résumé des capacités de MQTT sur les Websockets peut être trouvé ici .

16
Dominik Obermaier

MQTT est un protocole qui prend en charge les éléments suivants:

  • Fournit un mécanisme de publication/abonnement
  • Politique de qualité de service
  • Avoir des frais généraux minimes en communication
  • Conçu spécialement pour les canaux de communication à bande étroite et
    périphériques contraints.

Selon le périphérique, une implémentation est disponible.

Navigateur: il utilise les websockets. Websocket offre aux navigateurs la possibilité d’établir une communication en duplex intégral. Il existe une bibliothèque Javascript pour implémenter la fonctionnalité MQTT, voir le client JavaScript Eclipse Paho

Android: leur bibliothèque client MQTT est écrite en Java pour le développement d'applications sur Android. Voir Eclipse Paho Android Service

Cela dépend donc du périphérique qui utilisera cette fonctionnalité. Pour les normes et spécifications, veuillez visiter MQTT Version 3.1.1

En espérant que cela aide.

À votre santé !

14
Sachin Thapa

MQTT sur les sockets Web est également utile si l'application s'exécute derrière un pare-feu autorisant uniquement le trafic 443 et 80. Et vous n'avez aucun contrôle sur les politiques du pare-feu.

6
Vasif

Avec MQTT sur Websockets, chaque navigateur peut être un périphérique MQTT.

En raison du modèle de publication/abonnement de MQTT, vous obtenez un push en temps réel sur votre navigateur lorsqu'un événement - littéralement n'importe où dans le monde - se produit, tant que vous vous abonnez au bon sujet.

Dans le cas de MQTT sur WebSockets, la connexion websockets constitue un canal externe pour le protocole MQTT. Le serveur/courtier place le paquet MQTT dans un paquet websockets et l'envoie au client/serveur. Le client/serveur décompresse le paquet MQTT du paquet websockets puis le traite comme un paquet MQTT normal.

enter image description here

De plus, il a une grande influence sur l'internet des objets. Veuillez lire les documentations suivantes pour plus de détails.

Internet des objets SAP Cloud Platform

AWS IoT

MQTT sur Websockets avec HiveMQ

4
Abdul Alim Shakir

Courtier MQTT:

La contrepartie du client MQTT est le courtier MQTT. Le courtier est au cœur de tout protocole de publication/abonnement. Selon l'implémentation, un courtier peut gérer jusqu'à des milliers de clients MQTT connectés simultanément.

Client MQTT: Lorsque nous parlons d'un client, nous entendons presque toujours un client MQTT. Les éditeurs et les abonnés sont des clients MQTT. Les étiquettes d’éditeur et d’abonné indiquent si le client publie ou s’abonne à des messages (les fonctionnalités de publication et d’abonnement peuvent également être implémentées dans le même client MQTT).

WebSocket: Nous avons appris dans MQTT Essentials que MQTT est idéal pour les périphériques contraints et les réseaux peu fiables. Il est également idéal pour envoyer des messages avec un temps système très faible. Il serait très agréable d’envoyer et de recevoir des messages MQTT directement dans le navigateur d’un téléphone portable ou en général. Ceci est possible par MQTT sur WebSockets.

Vous pouvez utiliser un protocole tiers. PAHO, EMQTT, VerneMQ.

0
kiran malvi