Managed MQTT Cloud

Online-MQTT-Web-Client: jeden Broker direkt im Browser testen

Ein praxisnaher Leitfaden zum Testen von MQTT im Browser: wie Web-Clients sich über WebSockets verbinden, eine Schritt-für-Schritt-Sitzung mit dem Client im ConnectMQ-Portal, ein winziger eigener MQTT.js-Client und Lösungen für häufige Verbindungsfehler.

MQTT Web Client online in einem Browser-Tab, der über sichere WebSockets Topics auf einem Cloud-Broker publiziert und abonniert
Probieren Sie es auf Ihrem eigenen MQTT-Broker ausHolen Sie sich im Free-Tarif einen privaten, verwalteten MQTT-Broker und starten Sie mit fertigen Codebeispielen.
Kostenlos testen Codebeispiele Keine Kreditkarte erforderlich

Mit einem MQTT Web Client online verbinden Sie sich mit einem Broker, abonnieren Topics und publizieren Testnachrichten direkt aus einem Browser-Tab, ohne etwas zu installieren. In diesem Leitfaden erfahren Sie, wie Browser-Clients einen Broker tatsächlich erreichen, führen eine vollständige Testsitzung mit dem im ConnectMQ-Portal integrierten Client durch und bauen einen winzigen eigenen Browser-Client für die Fälle, die ein gehostetes Tool nicht abdeckt.

Warum einen MQTT Web Client online nutzen?

Kommandozeilen-Tools wie mosquitto_sub sind hervorragend, aber nicht immer verfügbar. Vielleicht sitzen Sie an einem abgeriegelten Firmen-Laptop, helfen einem Kollegen in einem Videocall oder prüfen bei der Inbetriebnahme einer Maschine in der Werkshalle vom Tablet aus, ob die Daten der SPS ankommen. Ein browserbasierter Client erspart die Einrichtung: Seite öffnen, Host und Zugangsdaten eingeben, und schon sehen Sie Live-Verkehr.

Typische Aufgaben für einen Web-Client:

  • Bestätigen, dass ein neues Gerät tatsächlich publiziert, und zwar auf dem erwarteten Topic.
  • Einen einmaligen Befehl wie ein Konfigurationsupdate oder das Schalten eines Relais an ein Testgerät senden.
  • Retained Messages nach einem Deployment prüfen.
  • Einer nicht technischen Ansprechperson zeigen, dass Daten fließen, ohne ein Terminal erklären zu müssen.
  • Einen Fehlerbericht mit genau dem Payload reproduzieren, den ein Kunde gesendet hat.

Ein Web-Client ist ein Werkzeug zum Testen und Debuggen, kein Produktionskonsument. Halten Sie dauerhaft laufende Integrationen in einem richtigen Service und nutzen Sie den Browser für interaktive Arbeit.

Wie sich Browser-MQTT-Clients verbinden

Browser können keine rohen TCP-Sockets öffnen, daher kann ein Browser-Client die klassischen MQTT-Ports 1883 oder 8883 nicht nutzen. Stattdessen tunnelt er MQTT in einer WebSocket-Verbindung. Der Broker muss einen WebSocket-Listener bereitstellen, und der Client muss sowohl den Port als auch den Pfad kennen. Den vollständigen Hintergrund liefert unser Leitfaden zu MQTT über WebSocket.

ConnectMQ stellt auf jedem Broker diese Listener bereit:

Transport Port URL-Form Aus dem Browser nutzbar?
MQTT über TCP 1883 mqtt://host:1883 Nein
MQTT über TLS 8883 mqtts://host:8883 Nein
WebSocket 8083 ws://host:8083/mqtt Nur von unverschlüsselten HTTP-Seiten
Secure WebSocket 8084 wss://host:8084/mqtt Ja, empfohlen

Zwei Browser-Regeln erklären die meisten fehlgeschlagenen Verbindungen. Erstens darf eine über HTTPS geladene Seite keinen unverschlüsselten ws://-Socket öffnen; der Browser blockiert das als Mixed Content. Zweitens kommt es auf den Pfad an: Eine Verbindung zu wss://broker.connectmq.com:8084 ohne /mqtt erreicht zwar den Server, schließt den MQTT-Handshake aber nie ab. Nutzen Sie Secure WebSocket mit dem vollständigen Pfad, und beide Probleme verschwinden. Der Broker liefert ein Let's-Encrypt-Zertifikat aus, dem Browser ohne zusätzliche Konfiguration vertrauen.

Schritt für Schritt: einen Broker mit dem ConnectMQ-Web-Client testen

Der schnellste Weg ist der im Portal integrierte MQTT-Client, weil er die Endpunkte und Zugangsdaten Ihres Brokers bereits kennt.

  1. Registrieren Sie sich unter app.connectmq.com, wählen Sie den kostenlosen Serverless-Plan und legen Sie einen Broker an. Das Portal generiert Benutzername, Passwort und Client ID für Sie.
  2. Öffnen Sie im Portal den MQTT-Client im Browser. Die Verbindungsdaten Ihres Brokers stehen direkt daneben zur Verfügung.
  3. Verbinden Sie sich. Ein erfolgreiches CONNACK bedeutet, dass Zugangsdaten und Client ID akzeptiert wurden. Denken Sie daran, dass Client IDs an die ausgegebenen Zugangsdaten gebunden sind; verwenden Sie also die Client ID aus dem Portal, statt eine eigene zu erfinden.
  4. Abonnieren Sie einen Wildcard-Filter für Ihr Projekt, zum Beispiel factory1/#, um alles unterhalb dieser Wurzel zu sehen.
  5. Publizieren Sie einen Test-Payload wie {"temperature": 21.7} auf factory1/line1/sensor1/telemetry mit QoS 1. Er sollte sofort im Subscription-Bereich erscheinen.
  6. Publizieren Sie noch einmal mit gesetztem Retain-Flag, trennen Sie die Verbindung, verbinden Sie sich neu und abonnieren Sie erneut. Der Retained-Wert sollte sofort ankommen, was beweist, dass der Broker den letzten Wert für dieses Topic speichert.
  7. Öffnen Sie den Live-Topic-Explorer in einem weiteren Tab. Dasselbe Topic erscheint nun im Baum, eine bequeme Gegenprobe, dass die Nachricht wirklich durch den Broker gelaufen ist.

Wenn Sie nur experimentieren möchten, können Sie jeden Web-Client auch auf den öffentlichen MQTT-Broker unter wss://broker.connectmq.com:8084/mqtt richten; er ist für Tests und Prototypen gedacht, nicht für Produktionsdaten. Er akzeptiert anonyme Verbindungen mit jeder nicht leeren, eindeutigen Client ID. Verwenden Sie ein eindeutiges Topic-Präfix wie connectmq/demo/k3x9/..., denn alles im öffentlichen Bereich ist für jeden lesbar.

Einen minimalen Browser-Client mit MQTT.js bauen

Manchmal brauchen Sie Verhalten, das ein generisches Tool nicht bietet: einen eigenen Payload-Generator, einen Button für einen bestimmten Befehl oder eine Seite, die Sie einem Servicetechniker geben können. MQTT.js läuft im Browser und spricht WebSockets nativ. Installieren Sie es in einem beliebigen Bundler-Projekt (Vite, webpack o. Ä.) mit npm install mqtt und verwenden Sie dann folgendes Modul:

import mqtt from "mqtt";

const prefix = `connectmq/demo/${Math.random().toString(16).slice(2, 8)}`;
const clientId = `web-${Math.random().toString(16).slice(2, 10)}`;

const client = mqtt.connect("wss://broker.connectmq.com:8084/mqtt", {
  clientId,
  protocolVersion: 5,
  clean: true,
  connectTimeout: 10_000,
  reconnectPeriod: 3_000,
  // Für Ihren privaten Broker die Zugangsdaten aus dem Portal ergänzen:
  // username: "YOUR_USERNAME",
  // password: "YOUR_PASSWORD",
  // und clientId: "YOUR_CLIENT_ID" verwenden
});

client.on("connect", (connack) => {
  console.log("Connected, reason code:", connack.reasonCode ?? 0);
  client.subscribe(`${prefix}/#`, { qos: 1 }, (err, granted) => {
    if (err) return console.error("Subscribe failed:", err);
    console.log("Granted:", granted);
    client.publish(
      `${prefix}/sensor1/telemetry`,
      JSON.stringify({ temperature: 21.7, ts: Date.now() }),
      { qos: 1 }
    );
  });
});

client.on("message", (topic, payload) => {
  console.log(`${topic} -> ${payload.toString()}`);
});

client.on("error", (err) => console.error("MQTT error:", err.message));
client.on("close", () => console.log("Connection closed"));

Öffnen Sie die Browser-Konsole: Sie sollten die Verbindungsmeldung, die gewährte QoS und Ihren eigenen Payload als Echo sehen. Da der Code MQTT 5 verwendet, steht der Wert connack.reasonCode zur Verfügung, und eine abgelehnte Verbindung meldet einen aussagekräftigen Grund statt eines generischen Fehlers.

Niemals Produktions-Secrets an den Browser ausliefern

Alles, was Sie in Frontend-JavaScript ablegen, ist für den Nutzer sichtbar. Für eine interne Debugging-Seite ist das akzeptabel, für ein öffentliches Dashboard nicht. Wenn viele Personen Lesezugriff benötigen, stellen Sie für das Dashboard eigene Zugangsdaten aus und halten Sie Geräte-Zugangsdaten getrennt, oder schalten Sie ein kleines Backend zwischen Browser und Broker. Unsere MQTT-Sicherheit: Best Practices behandeln die Trennung von Zugangsdaten ausführlicher.

Fehlerbehebung bei Verbindungen von Online-MQTT-Clients

Die meisten Probleme liegen in Transportdetails. Gehen Sie diese Checkliste der Reihe nach durch:

  1. Falscher Port. 1883 und 8883 funktionieren im Browser nicht. Nutzen Sie 8084 für wss://.
  2. Fehlender Pfad. Die URL muss auf /mqtt enden.
  3. Mixed Content. Eine HTTPS-Seite kann kein ws:// öffnen. Wechseln Sie zu wss://.
  4. Leere Client ID. Der öffentliche Broker verlangt eine nicht leere Client ID, Ihr privater Broker die ausgegebene.
  5. Doppelte Client ID. Wenn zwei Tabs dieselbe Client ID verwenden, trennt der Broker die ältere Sitzung jedes Mal, wenn sich der andere verbindet, und beide Tabs flattern. Geben Sie auf dem öffentlichen Broker jedem Tab eine eindeutige ID.
  6. Falsche Zugangsdaten. Kopieren Sie Benutzername und Passwort direkt aus dem Portal. Wiederholt fehlgeschlagene Logins können im Rahmen des Brute-Force-Schutzes des Brokers eine IP-Sperre auslösen; korrigieren Sie die Zugangsdaten also, bevor Sie es in einer Schleife erneut versuchen.
  7. Firmen-Proxy. Manche Proxys entfernen WebSocket-Upgrade-Header. Testen Sie zur Bestätigung aus einem anderen Netz.
  8. Quote erreicht. Der kostenlose Serverless-Plan erlaubt bis zu 25 Verbindungen. Mit MQTT 5 kann der Broker den Reason Code 0x97 (Quota exceeded) zurückgeben, den der MQTT.js-Client in seinem Fehler ausgibt.

Die Symptome deuten

Symptom Wahrscheinliche Ursache Lösung
Socket öffnet sich und schließt ohne CONNACK Fehlender Pfad /mqtt Pfad ergänzen
„Mixed content" in der Konsole ws:// von einer HTTPS-Seite wss:// auf 8084 verwenden
Verbindet sich und verbindet sich alle paar Sekunden neu Doppelte Client ID Eindeutige ID pro Tab verwenden
Publizierte Nachrichten verschwinden Topic stimmt nicht oder Subscription nicht aktiv Zuerst prefix/# abonnieren
Nicht autorisiert Falsche Zugangsdaten oder Client ID Erneut aus dem Portal kopieren

Wann Sie über den Browser hinausgehen sollten

Ein Web-Client ist ideal für interaktive Prüfungen, endet aber am Tab. Wenn Sie Verkehr stundenlang protokollieren, Nachrichten erneut abspielen oder Tests skripten müssen, wechseln Sie zu Tools, die außerhalb des Browsers laufen. Die Beispiele für mosquitto_pub und mosquitto_sub decken skriptbasiertes Testen ab, die ConnectMQ-Erweiterung für VS Code zeigt Reason Codes von CONNACK, SUBACK und PUBACK direkt in Ihrem Editor, und der ConnectMQ-Desktop-MQTT-Explorer eignet sich besser für lange Sitzungen. Um eine große Topic-Hierarchie visuell zu untersuchen, lesen Sie unsere Anleitung zum MQTT Topic Browser.

Für den Produktionsverkehr selbst ist die wichtige Entscheidung der Broker, nicht der Client. Ein verwalteter MQTT-Broker bietet Ihnen von Haus aus Secure-WebSocket-Endpunkte, ausgegebene Zugangsdaten und ein Portal mit Web-Client und Topic-Explorer, sodass die eben gelernten Browser-Prüfungen vom ersten Tag an funktionieren.

Starten Sie mit ConnectMQ

Legen Sie unter app.connectmq.com einen kostenlosen Broker im Serverless-Plan an; eine Kreditkarte ist nicht nötig. Sie erhalten Zugangsdaten, alle vier Transporte einschließlich Secure WebSockets und den Browser-Client aus diesem Leitfaden. Wie sich ConnectMQ im Vergleich zum Betrieb eines eigenen Servers schlägt, lesen Sie in unserem Leitfaden zur Wahl eines Cloud-MQTT-Brokers.

Häufig gestellte Fragen

Kann sich ein Browser mit MQTT-Port 1883 oder 8883 verbinden?

Nein. Browser können keine rohen TCP-Sockets öffnen und müssen daher MQTT über WebSocket nutzen. Bei ConnectMQ bedeutet das wss://<host>:8084/mqtt für verschlüsselte Verbindungen.

Ist es sicher, einen Online-MQTT-Web-Client mit echten Zugangsdaten zu verwenden?

Ja, wenn der Client in einer vertrauenswürdigen Seite läuft, etwa im Portal Ihres eigenen Brokers, und über wss:// verbindet. Geben Sie Produktions-Zugangsdaten nicht in unbekannte Websites Dritter ein und betten Sie niemals Geräte-Zugangsdaten in öffentlichen Frontend-Code ein.

Warum trennt sich mein Web-Client ständig?

Die häufigste Ursache sind zwei Sitzungen mit derselben Client ID, wodurch der Broker jedes Mal die ältere trennt. Geben Sie jedem Tab und jedem Tool eine eindeutige Client ID.

Enthält der kostenlose Plan den Web-Client?

Ja. Der kostenlose Serverless-Plan umfasst das Portal mit dem MQTT-Client im Browser und dem Live-Topic-Explorer.

Kann ich MQTT-5-Funktionen aus dem Browser nutzen?

Ja. MQTT.js unterstützt MQTT 5 mit protocolVersion: 5, sodass Sie im Browser Reason Codes auslesen und Funktionen wie Message Expiry und User Properties nutzen können.

Verwandte Artikel

BYOC-MQTT-Broker: Bring Your Own Cloud einfach erklärt

Ein BYOC-MQTT-Broker läuft in Ihrem Cloud-Konto, wird aber von einem Anbieter betrieben. Erfahren Sie, wie das Modell funktioniert, wie die Verantwortung aufgeteilt ist und wie Sie Ihr Konto darauf vorbereiten.

8 Min. Lesezeit

Google Cloud IoT Core Alternative: Optionen und Migration nach der Abschaltung

Google hat Cloud IoT Core im August 2023 eingestellt. Dieser Leitfaden vergleicht die realistischen Alternativen, überträgt IoT-Core-Konzepte auf reines MQTT und zeigt, wie Sie Geräte zu einem verwalteten MQTT-Broker umziehen, während die Daten weiter in Google Cloud fließen.

8 Min. Lesezeit

MQTT-Nachrichten pro Sekunde: Durchsatz abschätzen und messen

Die Durchsatzplanung für MQTT läuft auf wenige Formeln und eine ehrliche Messung hinaus. Erfahren Sie, wie Sie eingehende und ausgehende Nachrichten pro Sekunde abschätzen, Spitzen berücksichtigen und das Ergebnis einem Broker-Plan zuordnen.

7 Min. Lesezeit

Alle Artikel →

Ihr privater MQTT-Broker ist nur wenige Klicks entfernt

Konto anlegen, Broker-Zugangsdaten erhalten und das erste Gerät verbinden — ohne Server, die installiert, gepatcht oder skaliert werden müssen.