🔥 Firehook

Blog · mqtt

MQTT sur WebSockets : quand et pourquoi l’utiliser

Utiliser MQTT dans le navigateur via WebSockets : compromis, securite et performances.

Pilier broker glossy isometrique avec devices connectes et points lumineux publish/subscribe

Pourquoi WebSockets pour MQTT

Les navigateurs ne peuvent pas ouvrir de sockets TCP brutes. MQTT over WebSockets est donc la voie standard pour utiliser MQTT dans le web.

Cela permet aux dashboards d’abonner des flux temps reel sans polling.

Considerations de performance

Les frames WebSocket ajoutent un peu d’overhead, mais la connexion persistante reste bien plus efficace que du polling HTTP.

Pour des dashboards temps reel, MQTT sur WebSockets est souvent plus fluide.

Securite dans le navigateur

Utilisez WSS et des tokens courts. Les tokens web sont plus exposes, il faut limiter les droits.

Appliquez des ACL strictes pour limiter les topics accessibles.

Limites de connexions

Les navigateurs peuvent ouvrir plusieurs connexions (multi-onglets). Favorisez une connexion unique cote client.

Cote broker, limitez les connexions par user et imposez des timeouts.

Taille des payloads

Les UIs ne doivent pas recevoir des payloads trop lourds. Publiez des messages compacts et utilisez HTTP pour les grosses donnees.

Cela garde MQTT en temps reel sans penaliser l’UI.

Strategies de fallback

Si WebSockets sont bloques, prevoyez un fallback polling pour un sous-ensemble.

Expliquez clairement que le mode fallback est moins instantane.

Quand l’eviter

Si votre app ne recoit que rarement des mises a jour, HTTP peut suffire. MQTT sur WebSockets brille pour le temps reel.

Utilisez-le pour presence, statut et suivi des commandes.

FAQ

MQTT sur WebSockets est-il securise ?
Oui, avec WSS et tokens courts.
Est-ce plus lent que MQTT brut ?
Un peu, mais toujours plus efficace que du polling.
Les navigateurs peuvent-ils publier des commandes ?
Oui, mais restreignez les topics et validez cote serveur.
Cela marche-t-il sur mobile ?
Oui, les navigateurs mobiles supportent WebSockets.
Faut-il garder des APIs HTTP ?
Oui, pour config et donnees lourdes.