Avant de plonger dans le MQTT, rappelons ce qu'est un protocole. En informatique, un protocole est simplement un ensemble de règles qui permettent à des machines de communiquer entre elles.Les plus connus sont HTTP, FTP, ou encore Websocket, mais il en existe des dizaines d'autres, chacun conçu pour répondre à des besoins spécifiques.
Voyez ça un peu comme une enveloppe que vous voulez envoyer à quelqu'un. Vous devez suivre des règles, sinon votre lettre n'arrivera jamais. C'est pareil avec un protocole informatique !
MQTT est un protocole de messagerie M2M (Machine to Machine) créé le siècle dernier, en 1999 plus précisement, pour l'industrie pétrolière. Il a été créé initialement pour des environnements où la bande passante est limitée et la fiabilité cruciale.
Publié en 2012 et standardisé en 2014, il est aujourd'hui devenu une référence dans le monde des objets connectés (appelé aussi IoT).
Ce qui fait la force de MQTT, c'est sa simplicité, sa légèreté et sa fiabilité, qui le rendent parfait pour des appareils à ressources limitées. Vous comprenez donc son utilisation dans l'IoT !
MQTT utilise un modèle de communication publish/subscribe, qui diffère fondamentalement du modèle requête/réponse utilisé par HTTP.
3 notions sont importante à comprendre :
Par exemple, un capteur de température pourrait publier la température actuelle sur le topic /capteurs/temperature
, et une application de tableau de bord pourrait s'abonner à ce topic pour capter cette information, et ainsi l'afficher.
Pour reprendre l'analogie de l'enveloppe, on peut voir le broker comme la poste, et les topics comme des journaux. Vous, le client, vous abonnez à un journal (un topic). Dès qu'un nouveau numéro sort, la poste (le broker) l'envoi à tous les clients abonnés à ce journal.
Les avantages de ce modèle de communication résident en plusieurs points
Une des fonctionnalités les plus puissante de MQTT est sa gestion de la qualité de service (QoS). Il en existe 3 :
Comme vous pouvez vous en douter, plus vous choisirez une QoS élevée, plus le service sera gourmand en performance. Une QoS 2 demandera beaucoup d'aller-retours entre les clients et le broker, alors qu'une QoS 0 consiste en un envoi unique.
Il est donc important de bien choisir sa QoS en fonction de son utilisation. Si vous avez une application de tableau de bord pour des objets connectés, ce n'est pas la fin du monde si vous ne recevez pas 1 ou 2 valeurs de votre thermomètre.
Techniquement parlant, ce ne sont pas 2 protocoles comparables. MQTT étant du M2M, et Websocket du web, il ne sont pas utilisés dans les même cas, et pourtant !
Si je vous parles du MQTT, c'est surtout car même s'il s'agit d'un protocole M2M, on peut l'utiliser dans le web ! Mais comme les navigateurs ne le supportent pas nativement, c'est possible grâce au "MQTT over WSS".
Pour faire simple, on a bien toute l'architecture du MQTT avec un broker et des topics, mais la partie transport vers les clients est gérée à travers du Websocket.
Toutefois, utiliser du MQTT dans le web à tout de même des avantages par rapport à Websocket :
Pour illustrer l'utilité de MQTT, prenons l'exemple d'une application de quiz en temps réel où plusieurs joueurs répondent à des questions sur leur smartphone, avec un autre écran qui gère le déroulement du quiz et les résultats.
Dans une architecture classique utilisant WebSocket, le serveur devrait maintenir la liste des connexions de chaque client (joueurs et écran) et gérer explicitement l'envoi de messages à chacun.
Avec MQTT, l'architecture devient plus élégante :
/player-join
pour recevoir les joueurs qui se connectent./next-question
pour recevoir les nouvelles questions./player-join
lorsqu'ils se connectent./next-question
.Cette architecture est plus découplée, plus facile à faire évoluer, et gère naturellement les déconnexions temporaires.
Si vous voulez essayer MQTT dans vos projets Web, voici quelques pistes :
AWSLe Cloud AWS (Amazon WebServices) est une plateforme de services cloud développée par le géant américain Amazon. offre un service MQTT intégré à IoT Core, qui est assez simple à utiliser :
Il existe aussi d'excellents brokers MQTT open source comme Mosquitto ou EMQX, que vous pouvez héberger vous-même.
MQTT est un protocole puissant qui, malgré sa simplicité, offre des fonctionnalités avancées pour créer des applications temps réel robustes.
Si vous développez des projets IoT ou des applications web nécessitant des communications en temps réel fiables, je vous encourage vraiment à l'essayer.
Bienvenue dans l’univers fascinant des méthodes HTTP, les véritables héros de la communication sur le web ! Que vous soyez développeur web ou simplement curieux, comprendre ces méthodes vous permettra de maîtriser les interactions entre les navigateurs et les serveurs. Dans cet article, nous allons explorer les différentes méthodes HTTP, découvrir leurs utilisations spécifiques et voir comment elles peuvent transformer votre manière de développer des applications web. Prêt pour le voyage ? Allons-y !
Découvrez la planche #62 !
En Java, pour savoir ce qui peut avoir un impact sur les performances, il est nécessaire de comprendre ce qui se passe lorsqu’on lance un traitement en parallèle avec les streams. C’est l’objet de cet article.