Quand une connexion MQTT échoue, le port est la première chose à vérifier. MQTT peut fonctionner sur TCP brut, sur TLS, sur WebSockets et sur WebSockets sécurisés — et chaque transport vit généralement sur un port différent. Choisir le mauvais est de loin la cause la plus fréquente d’un client bloqué sur Connecting…. Ce guide explique chaque port MQTT courant, quand l’utiliser, ainsi que les ports exacts des brokers publics sur lesquels vous pouvez tester.
Les ports MQTT en un coup d’œil
| Port | Transport | Schéma d’URL | Chiffré | Fonctionne dans un navigateur |
|---|---|---|---|---|
1883 | MQTT sur TCP | mqtt:// | Non | Non |
8883 | MQTT sur TLS | mqtts:// | Oui | Non |
8083 / 8080 / 8000 / 80 | MQTT sur WebSocket | ws:// | Non | Uniquement depuis des pages HTTP non chiffrées |
8084 / 8081 / 8884 / 443 | MQTT sur WebSocket sécurisé | wss:// | Oui | Oui |
Seuls 1883 et 8883 sont enregistrés auprès de l’IANA (sous les noms mqtt et secure-mqtt). Les ports WebSocket relèvent d’une convention qui change d’un broker à l’autre : vérifiez donc toujours la documentation du broker — ou notre liste de brokers publics — avant de vous connecter.
Port MQTT 1883 : TCP en clair
Le port MQTT 1883 est le transport d’origine, non chiffré. Le client ouvre une connexion TCP et envoie directement le paquet binaire CONNECT. C’est le transport le plus léger, et celui qu’utilisent par défaut la plupart des appareils embarqués, des outils en ligne de commande comme mosquitto_pub et des bibliothèques côté serveur.
Le piège : tout — y compris le nom d’utilisateur et le mot de passe contenus dans CONNECT — circule en clair. Utilisez 1883 sur un réseau local de confiance ou pour des tests jetables, jamais pour des identifiants ou des données de production qui traversent Internet.
Port MQTT 8883 : MQTT sur TLS
Le port MQTT 8883 transporte le même protocole MQTT encapsulé dans TLS. Le client effectue d’abord un handshake TLS, vérifie le certificat du broker, puis seulement envoie CONNECT. C’est le choix par défaut pour les appareils et services backend qui dialoguent avec un broker via Internet.
- Le client a besoin d’un bundle de CA de confiance (le magasin système suffit pour les CA publiques ; les configurations auto-signées nécessitent un
cafile). - Le nom d’hôte auquel vous vous connectez doit correspondre au certificat : connectez-vous par nom, pas par adresse IP.
- Les brokers peuvent en plus exiger des certificats client (TLS mutuel) sur ce port ou sur un port séparé.
Ports WebSocket MQTT : 8083, 8084 et compagnie
Les navigateurs ne peuvent pas ouvrir de sockets TCP bruts : les applications web font donc passer MQTT dans un WebSocket. Le client envoie une requête HTTP d’upgrade vers un chemin (souvent /mqtt) avec le sous-protocole mqtt, puis les paquets MQTT circulent dans des trames WebSocket. Il n’existe pas de port WebSocket MQTT standard unique :
- EMQX utilise par défaut
8083(ws) et8084(wss). - Le broker public de HiveMQ utilise
8000(ws) et8884(wss). - test.mosquitto.org utilise
8080(ws) et8081(wss). - De nombreux déploiements de production placent les WebSockets derrière un reverse proxy sur
80/443.
Port 443 : passer les pare-feu
Les réseaux d’entreprise, le Wi-Fi des hôtels et les opérateurs mobiles bloquent souvent tout sauf les ports web. Faire passer MQTT sur WebSockets sécurisés sur le port 443 donne au trafic l’apparence d’un HTTPS ordinaire : il passe presque partout. Le bac à sable Eclipse sur mqtt.eclipseprojects.io fait exactement cela. Certaines plateformes IoT cloud acceptent aussi MQTT natif sur TLS sur le port 443 et utilisent l’extension TLS ALPN pour le distinguer du HTTPS sur le même port.
Ports des brokers MQTT publics populaires
| Broker | Hôte | TCP | TLS | WS | WSS |
|---|---|---|---|---|---|
| HiveMQ | broker.hivemq.com | 1883 | 8883 | 8000 /mqtt | 8884 /mqtt |
| EMQX | broker.emqx.io | 1883 | 8883 | 8083 /mqtt | 8084 /mqtt |
| Mosquitto | test.mosquitto.org | 1883 | 8883 | 8080 | 8081 |
| Eclipse | mqtt.eclipseprojects.io | 1883 | 8883 | 80 /mqtt | 443 /mqtt |
| ConnectMQ (accès anticipé) | broker.connectmq.com | 1883 | 8883 | 8083 /mqtt | 8084 /mqtt |
test.mosquitto.org propose aussi des listeners supplémentaires pour des tests spécifiques, comme un listener authentifié sur 1884 (nom d’utilisateur rw, mot de passe readwrite).
Se connecter à EMQX sur le port wss 8084
Indiquer le port dans une URL de connexion
La plupart des bibliothèques clientes acceptent une URL unique qui combine schéma, hôte, port et (pour les WebSockets) chemin :
import mqtt from 'mqtt';
// Node.js only — raw TCP and TLS
mqtt.connect('mqtt://broker.emqx.io:1883');
mqtt.connect('mqtts://broker.emqx.io:8883');
// Browser or Node.js — WebSockets (note the /mqtt path)
mqtt.connect('ws://broker.emqx.io:8083/mqtt');
mqtt.connect('wss://broker.emqx.io:8084/mqtt');Erreurs de port courantes
- Utiliser
mqtt://sur un port WebSocket (ouws://sur 1883). Le schéma détermine le protocole que parle le client ; le port doit lui correspondre. - Oublier le chemin WebSocket. De nombreux brokers n’acceptent l’upgrade que sur
/mqtt; sans lui, vous obtenez une 404 ou un échec silencieux. - Utiliser TLS sur un port en clair.
mqtts://sur 1883 échoue avec une erreur de handshake TLS du type wrong version number. - Ne tester que depuis votre propre réseau. Un port qui fonctionne au bureau peut être bloqué sur un réseau cellulaire ou un Wi-Fi invité. Testez depuis le réseau que vos appareils utiliseront réellement.
- Exposer 1883 sur Internet avec un accès anonyme. Les scanners qui balayent Internet trouvent très vite les brokers MQTT ouverts. Si un broker doit être joignable, exigez des identifiants et privilégiez TLS.
Comment vérifier si un port MQTT est ouvert
Avant d’accuser votre code, confirmez que le port est joignable depuis votre réseau :
# Is the TCP port open?
nc -vz broker.hivemq.com 1883
# Does the TLS port complete a handshake with a valid certificate?
openssl s_client -connect broker.hivemq.com:8883 -servername broker.hivemq.com </dev/null
# Full MQTT round trip over TLS
mosquitto_sub -h broker.hivemq.com -p 8883 --capath /etc/ssl/certs -t 'testmqtt/port-check' -vUn timeout signifie généralement qu’un pare-feu bloque le trafic ; connection refused signifie que rien n’écoute sur ce port. Notre guide des erreurs de connexion MQTT couvre les deux cas.
Ouvrir des ports sur votre propre broker
Si vous exploitez Mosquitto vous-même, chaque port est un listener distinct. Une configuration typique garde 1883 lié à localhost et n’expose publiquement que des listeners chiffrés :
# Plain MQTT, local clients only
listener 1883 127.0.0.1
# MQTT over TLS
listener 8883
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
# Secure WebSockets for browsers
listener 8084
protocol websockets
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
allow_anonymous false
password_file /etc/mosquitto/passwdN’oubliez pas d’ouvrir les mêmes ports dans votre pare-feu cloud ou votre security group.
Quel port MQTT utiliser ?
- Appareil ou backend via Internet :
8883(TLS). - Application dans le navigateur : le port
wss://du broker, idéalement443. - Réseau restrictif :
wss://sur443. - Développement local ou test rapide sur un broker public :
1883convient.
Prêt à essayer ? Ouvrez le client MQTT en ligne, choisissez un broker : le port WebSocket sécurisé est renseigné pour vous.
Questions fréquentes
Quel est le port MQTT par défaut ?
Le port par défaut de MQTT non chiffré sur TCP est 1883, et celui de MQTT sur TLS est 8883. Les deux sont enregistrés auprès de l’IANA. Les ports WebSocket ne sont pas standardisés et varient selon le broker.
Quel port MQTT utiliser depuis un navigateur web ?
Un navigateur ne peut pas ouvrir de connexions TCP brutes : il doit utiliser le listener WebSocket du broker. Depuis une page HTTPS, il vous faut le port WebSocket sécurisé (wss), par exemple 8084 sur EMQX, 8884 sur HiveMQ ou 443 sur le bac à sable Eclipse.
MQTT peut-il fonctionner sur le port 443 ?
Oui. De nombreux brokers exposent MQTT sur WebSockets sécurisés sur le port 443, car il n’est presque jamais bloqué par les pare-feu ou les proxys. Certains services IoT cloud acceptent aussi MQTT sur TLS sur le port 443 grâce à ALPN.