Wenn eine MQTT-Verbindung fehlschlägt, ist der Port das Erste, was du prüfen solltest. MQTT kann über reines TCP, über TLS, über WebSockets und über sichere WebSockets laufen – und jeder Transport liegt normalerweise auf einem anderen Port. Den falschen zu wählen ist der häufigste Grund, warum ein Client bei Connecting… hängen bleibt. Dieser Leitfaden erklärt jeden gängigen MQTT-Port, wann du ihn nutzt und welche Ports die öffentlichen Broker haben, gegen die du testen kannst.
MQTT-Ports auf einen Blick
| Port | Transport | URL-Schema | Verschlüsselt | Funktioniert im Browser |
|---|---|---|---|---|
1883 | MQTT über TCP | mqtt:// | Nein | Nein |
8883 | MQTT über TLS | mqtts:// | Ja | Nein |
8083 / 8080 / 8000 / 80 | MQTT über WebSocket | ws:// | Nein | Nur von reinen HTTP-Seiten |
8084 / 8081 / 8884 / 443 | MQTT über sicheren WebSocket | wss:// | Ja | Ja |
Nur 1883 und 8883 sind bei der IANA registriert (als mqtt und secure-mqtt). WebSocket-Ports sind eine Konvention, die sich von Broker zu Broker unterscheidet. Prüfe deshalb vor dem Verbinden immer die Doku des Brokers – oder unsere Liste öffentlicher Broker.
MQTT-Port 1883: reines TCP
MQTT-Port 1883 ist der ursprüngliche, unverschlüsselte Transport. Der Client öffnet eine TCP-Verbindung und sendet das binäre CONNECT-Paket direkt. Er hat den geringsten Overhead und wird standardmäßig von den meisten Embedded-Geräten, Kommandozeilen-Tools wie mosquitto_pub und serverseitigen Bibliotheken genutzt.
Der Haken: Alles – auch Benutzername und Passwort im CONNECT – wird im Klartext übertragen. Nutze 1883 in einem vertrauenswürdigen lokalen Netz oder für Wegwerf-Tests, aber niemals für Zugangsdaten oder Produktionsdaten, die übers Internet gehen.
MQTT-Port 8883: MQTT über TLS
MQTT-Port 8883 ist dasselbe MQTT-Protokoll, verpackt in TLS. Der Client führt zuerst einen TLS-Handshake durch, prüft das Broker-Zertifikat und sendet erst dann CONNECT. Das ist die Standardwahl für Geräte und Backend-Services, die übers Internet mit einem Broker sprechen.
- Der Client braucht ein vertrauenswürdiges CA-Bundle (für öffentliche CAs reicht der System-Store; selbstsignierte Setups brauchen eine
cafile). - Der Hostname, mit dem du dich verbindest, muss zum Zertifikat passen – verbinde dich also per Name, nicht per IP-Adresse.
- Broker können auf diesem oder einem separaten Port zusätzlich Client-Zertifikate verlangen (Mutual TLS).
MQTT-WebSocket-Ports: 8083, 8084 und Co.
Browser können keine rohen TCP-Sockets öffnen, deshalb tunneln Web-Apps MQTT durch einen WebSocket. Der Client stellt einen HTTP-Upgrade-Request auf einen Pfad (meist /mqtt) mit dem Subprotokoll mqtt, und ab dann laufen die MQTT-Pakete in WebSocket-Frames. Einen einheitlichen MQTT-WebSocket-Port gibt es nicht:
- EMQX nutzt standardmäßig
8083(ws) und8084(wss). - Der öffentliche Broker von HiveMQ nutzt
8000(ws) und8884(wss). - test.mosquitto.org nutzt
8080(ws) und8081(wss). - Viele Produktions-Deployments legen WebSockets hinter einen Reverse Proxy auf
80/443.
Port 443: durch Firewalls kommen
Firmennetze, Hotel-WLANs und Mobilfunkanbieter blockieren oft alles außer Web-Ports. Läuft MQTT über sichere WebSockets auf 443, sieht der Traffic aus wie gewöhnliches HTTPS und kommt fast überall durch. Die Eclipse-Sandbox unter mqtt.eclipseprojects.io macht genau das. Manche Cloud-IoT-Plattformen akzeptieren auch natives MQTT über TLS auf 443 und unterscheiden es per TLS-ALPN-Extension von HTTPS auf demselben Port.
Ports beliebter öffentlicher MQTT-Broker
| Broker | Host | 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 (Early Access) | broker.connectmq.com | 1883 | 8883 | 8083 /mqtt | 8084 /mqtt |
test.mosquitto.org betreibt zusätzlich Listener für spezielle Tests, etwa einen authentifizierten Listener auf 1884 (Benutzername rw, Passwort readwrite).
Mit EMQX auf wss-Port 8084 verbinden
Den Port in eine Verbindungs-URL einbauen
Die meisten Client-Bibliotheken erwarten eine einzige URL, die Schema, Host, Port und (bei WebSockets) Pfad kombiniert:
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');Typische Port-Fehler
mqtt://auf einem WebSocket-Port (oderws://auf 1883). Das Schema bestimmt, welches Protokoll der Client spricht; der Port muss dazu passen.- Den WebSocket-Pfad vergessen. Viele Broker akzeptieren das Upgrade nur auf
/mqtt; ohne ihn bekommst du einen 404 oder einen stillen Fehlschlag. - TLS auf einem unverschlüsselten Port.
mqtts://auf 1883 scheitert mit einem TLS-Handshake-Fehler wie wrong version number. - Nur aus dem eigenen Netz testen. Ein Port, der im Büro funktioniert, kann im Mobilfunk oder im Gäste-WLAN blockiert sein. Teste aus dem Netz, das deine Geräte tatsächlich nutzen.
- 1883 mit anonymem Zugriff ins Internet stellen. Internetweite Scanner finden offene MQTT-Broker sehr schnell. Wenn ein Broker erreichbar sein muss, verlange Zugangsdaten und bevorzuge TLS.
So prüfst du, ob ein MQTT-Port offen ist
Bevor du deinem Code die Schuld gibst, stell sicher, dass der Port aus deinem Netz erreichbar ist:
# 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' -vEin Timeout bedeutet meist, dass eine Firewall den Traffic verwirft; connection refused heißt, dass auf dem Port nichts lauscht. Unser Leitfaden zu MQTT-Verbindungsfehlern behandelt beides.
Ports auf deinem eigenen Broker öffnen
Wenn du Mosquitto selbst betreibst, ist jeder Port ein eigener listener. Ein typisches Setup bindet 1883 an localhost und stellt öffentlich nur verschlüsselte Listener bereit:
# 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/passwdDenk daran, dieselben Ports auch in deiner Cloud-Firewall bzw. Security Group zu öffnen.
Welchen MQTT-Port solltest du nutzen?
- Gerät oder Backend übers Internet:
8883(TLS). - Browser-App: der
wss://-Port des Brokers, idealerweise443. - Restriktives Netz:
wss://auf443. - Lokale Entwicklung oder ein schneller Test mit einem öffentlichen Broker:
1883reicht.
Bereit, es auszuprobieren? Öffne den Online-MQTT-Client, wähle einen Broker, und der sichere WebSocket-Port wird automatisch für dich eingetragen.
Häufig gestellte Fragen
Was ist der Standard-Port für MQTT?
Der Standard-Port für unverschlüsseltes MQTT über TCP ist 1883, für MQTT über TLS 8883. Beide sind bei der IANA registriert. WebSocket-Ports sind nicht standardisiert und unterscheiden sich je nach Broker.
Welchen MQTT-Port sollte ich im Webbrowser nutzen?
Ein Browser kann keine rohen TCP-Verbindungen öffnen und muss daher den WebSocket-Listener des Brokers nutzen. Von einer HTTPS-Seite aus brauchst du den Port für sichere WebSockets (wss), zum Beispiel 8084 bei EMQX, 8884 bei HiveMQ oder 443 bei der Eclipse-Sandbox.
Kann MQTT auf Port 443 laufen?
Ja. Viele Broker bieten MQTT über sichere WebSockets auf 443 an, weil dieser Port fast nie von Firewalls oder Proxys blockiert wird. Manche Cloud-IoT-Dienste akzeptieren auch MQTT über TLS auf 443 mithilfe von ALPN.