Diese Dokumentation bietet einen umfassenden Leitfaden zur Integration von Node.js mit unserenMQTT Broker(CrystalMQ) oder jeder MQTT Broker Ihrer Wahl. Es umfasst wesentliche Aufgaben wie die Einrichtung von Verbindungen, die Anmeldung zu Themen, Abschreiben und Nachrichten austauschen. Durch die folgenden Schritte können Sie effektiv implementierenMQTKommunikation innerhalb Node.js Anwendungen.
Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden:
npm install mqtt --save
Dieser Abschnitt hat Code-Snippets von verschiedenen Möglichkeiten, um mit MQTT Broker zu verbinden. Stellen Sie sicher, dass der MQTT Broker unterstützt die Verbindung Typ, den Sie verwenden möchten. Auch, die entsprechenden Verbindungsparameter des MQTT Broker (Adresse, Port, Benutzername/Passwort, CA Certificate)
MQT Über TCP
Verwenden Sie den folgenden Code, um den Client über TCP zu verbinden. Definieren Sie die Macro ADDRESS mit den Verbindungsparametern von MQTT Broker.
Für MQTT 3.1.1:
const broker Url =
„mqtt://public-mqtt-broker.bevywise.com;
const conn_params = {client Id : "kristallmq_" +
Math.random().toString(36).substring(2, 12)};
const client = mqt.connect(brokerUrl, conn_params);
Für MQTT 5:
const mqtt = bed('mqt');
const broker Url = 'mqtt://public-mqtt-broker.bevywise.com';
const conn_params = {
clientId: "kristallmq_" + Math.random().toString(36).substring(2,
L 347 vom 20.12.2013, S. 1).
Protokoll Ausführung: 5 // MQTT angeben 5 Protokollversion
};
const client = mqt.connect(brokerUrl, conn_params);
MQTT über TLS / SSL
Verwenden Sie den folgenden Code, um sicher mit MQTT Broker über TLS zu verbinden. Definieren Sie die Macro ADDRESS mit den Verbindungsparametern von MQTT Broker.
// Definieren Sie die MQTT-Brokeradresse
const ADDRESS = 'mqtt://public-mqtt-broker.bevywise.com';
// TLS Optionen
const tls_options = {
Ablehnung Unautorisiert: true, // Setzen Sie auf false, wenn Sie selbstsigniert verwenden
Zertifikate
ca: [fs.readFileSync('/path/to/ca.crt')], // CA Certificate(s)
cert: fs.readFileSync('/path/to/client.crt'), // Kundenzertifikat
Schlüssel: fs.readFileSync('/path/to/client.key'), // Client Private Key
};
// MQTT Anschlussmöglichkeiten
const conn_params = {
clientId: "kristallmq_" + Math.random().toString(36).substring(2,
L 347 vom 20.12.2013, S. 1).
Protokollversion: 4, // MQTT 3.1.1 Protokollversion
Protokoll Id: 'MQTT',
sauber: wahr,
reconnectPeriod: 1000,
ConnectTimeout: 30 * 1000,
Benutzername: 'Ihr Name',
Passwort: 'your-password',
wird:
Thema: 'will-topic',
Nutzlast: 'Connection Abnormal geschlossen..',
Qos: 1,
behalten: falsch,
},
Haltemittel: 60,
zurückbestellen: wahr,
Ablehnung Unautorisiert: true, // Optional, bei Verwendung auf false gesetzt
Selbstsignierte Zertifikate
ca: [fs.readFileSync('/path/to/ca.crt')], // CA Certificate(s)
cert: fs.readFileSync('/path/to/client.crt'), // Kundenzertifikat
Schlüssel: fs.readFileSync('/path/to/client.key'), // Client Private Key
};
// MQTT-Broker verbinden
const client = mqt.connect(ADDRESS, conn_params);
Setzen Sie TLS-Parameter vor dem Aufruf der MQTTClient_connect, um den Client zu verbinden der mQTT Broker sicher über TLS.
Wenn der MQTT Broker in einem vertrauenswürdigen Server gehostet wird und die Serververifikation nicht erforderlich, der folgende Code kann verwendet werden, um TLS-Optionen einzustellen:
// Definieren Sie die MQTT-Brokeradresse
const ADDRESS = 'mqtt://public-mqtt-broker.bevywise.com';
// TLS Optionen
const tls_options = {
Ablehnung Unautorisiert: falsch, // Setzen Sie auf false, um den Server zu überspringen
Überprüfung
};
// MQTT Anschlussmöglichkeiten
const conn_params = {
clientId: "kristallmq_" + Math.random().toString(36).substring(2,
L 347 vom 20.12.2013, S. 1).
Protokollversion: 4, // MQTT 3.1.1 Protokollversion
Protokoll Id: 'MQTT',
sauber: wahr,
reconnectPeriod: 1000,
ConnectTimeout: 30 * 1000,
Benutzername: 'Ihr Name',
Passwort: 'your-password',
wird:
Thema: 'will-topic',
Nutzlast: 'Connection Abnormal geschlossen..',
Qos: 1,
behalten: falsch,
},
Haltemittel: 60,
zurückbestellen: wahr,
Ablehnung Unautorisiert: falsch, // Setzen Sie auf false, um den Server zu überspringen
Überprüfung
};
// MQTT-Broker verbinden
const client = mqt.connect(ADDRESS, { ...conn_params, ...tls_options
})
Wenn das MQTT Broker Serverzertifikat von einer Trusted CA ausgestellt hat, dann der Server Zertifikat kann mit:
// Definieren Sie die MQTT-Brokeradresse
const ADDRESS = 'mqtt://public-mqtt-broker.bevywise.com';
// TLS Optionen
const tls_options = {
ca. [fs.readFileSync('/path/to/ca.crt')], // Trusted CA Certificate
};
// MQTT Anschlussmöglichkeiten
const conn_params = {
clientId: "kristallmq_" + Math.random().toString(36).substring(2,
L 347 vom 20.12.2013, S. 1).
Protokollversion: 4, // MQTT 3.1.1 Protokollversion
Protokoll Id: 'MQTT',
sauber: wahr,
reconnectPeriod: 1000,
ConnectTimeout: 30 * 1000,
Benutzername: 'Ihr Name',
Passwort: 'your-password',
wird:
Thema: 'will-topic',
Nutzlast: 'Connection Abnormal geschlossen..',
Qos: 1,
behalten: falsch,
},
Haltemittel: 60,
zurückbestellen: wahr,
Ablehnung Unautorisiert: true, // Um den Server zu überprüfen
Bescheinigung
ca. [fs.readFileSync('/path/to/ca.crt')], // Trusted CA Certificate
};
// MQTT-Broker verbinden
const client = mqt.connect(ADDRESS, { ...conn_params, ...tls_options
})
Hat der MQTT Broker ein selbstsigniertes Serverzertifikat, dann das Serverzertifikat kann mit dem Root Certificate aus dem MQTT Broker überprüft werden:
// Definieren Sie die MQTT-Brokeradresse
const ADDRESS = 'mqtt://public-mqtt-broker.bevywise.com';
// Root CA-Zertifikat (selbstsigniertes Zertifikat von MQTT Broker)
const rootCA = fs.readFileSync('/path/to/rootca.crt');
// TLS Optionen
const tls_options = {
ca. [rootCA], // Root CA-Zertifikat des MQTT-Brokers
};
// MQTT Anschlussmöglichkeiten
const conn_params = {
clientId: "kristallmq_" + Math.random().toString(36).substring(2,
L 347 vom 20.12.2013, S. 1).
Protokollversion: 4, // MQTT 3.1.1 Protokollversion
Protokoll Id: 'MQTT',
sauber: wahr,
reconnectPeriod: 1000,
ConnectTimeout: 30 * 1000,
Benutzername: 'Ihr Name',
Passwort: 'your-password',
wird:
Thema: 'will-topic',
Nutzlast: 'Connection Abnormal geschlossen..',
Qos: 1,
behalten: falsch,
},
Haltemittel: 60,
zurückbestellen: wahr,
Ablehnung Unautorisiert: true, // Um den Server zu überprüfen
Bescheinigung
ca. [rootCA], // Root CA-Zertifikat des MQTT-Brokers
};
// MQTT-Broker verbinden
const client = mqt.connect(ADDRESS, { ...conn_params, ...tls_options
})
MQTT über WebSocket
Definieren Sie die MQTT Broker Adresse wie diese, um den Client über WebSocket zu verbinden.
const broker Url = 'ws://public-mqtt-broker.bevywise.com:10443/mqtt';
const conn_params = {
Kunden Id : "kristallmq_" + Math.random().toString(36).substring(2, 12),
Benutzername : "einige Benutzernamen",
Passwort : "some passwort"
};
const client = mqt.connect(brokerUrl, conn_params);
MQTT über Secure WebSocket
Verwenden Sie den folgenden Code, um den Client über Secure WebSocket zu verbinden. Setzen Sie TLS-Optionen wie in MQTT über TLS Abschnitt angegeben. Definieren Sie die Macro ADDRESS mit den Verbindungsparametern von MQTT Broker.
const broker Url = 'wss://public-mqtt-broker.bevywise.com:11443/mqtt';
const conn_params = {
Kunden Id : "kristallmq_" + Math.random().toString(36).substring(2,
L 347 vom 20.12.2013, S. 1).
};
const client = mqt.connect(brokerUrl, conn_params);
Um mit MQTT Broker zu verbinden, die MQTT Username und MQTT Password benötigt Authentifizierung, Benutzername und Passwort zu den folgenden Verbindungsoptionen hinzufügen:
const broker Url = 'mqtt://public-mqtt-broker.bevywise.com;
const conn_params = {
Kunden Id : "kristallmq_" + Math.random().toString(36).substring(2, 12),
Benutzername : "einige Benutzernamen",
Passwort : "some passwort"
};
const client = mqt.connect(brokerUrl, conn_params);
Das letzte Testament einrichten
Konfigurieren derLetzter Wille und Testamenteine Nachricht angeben, die Broker wird veröffentlichen, wenn der Client Unerwartet abschaltet. Dies hilft anderen Abonnenten den Status des abgeschalteten Clients zu informieren.
Verwenden Sie den folgenden Code, um Last Will in den Verbindungsoptionen festzulegen:
const broker Url = 'mqtt://public-mqtt-broker.bevywise.com;
const conn_params = {
Kunden Id : "kristallmq_" + Math.random().toString(36).substring(2, 12),
wird:
Thema: "letzter Wille",
Nutzlast: 'Goodbye, CrystalMQ! '
}
};
const client = mqt.connect(brokerUrl, conn_params);
Adjusting Keep Alive
MQTT unterhält Client-Broker-Verbindungen mit einemIch bin nicht da.Mechanismus. Passen Sie das Halteintervall an, um zu kontrollieren, wie häufig der Client PINGREQ sendet Nachrichten an den Broker.
Ändern Sie den untenstehenden Code entsprechend Ihren Anforderungen:
const conn_params = {
Kunden Id : "kristallmq_" + Math.random().toString(36).substring(2, 12),
: 60,
}
};
Sitzungspersistenz konfigurieren
Sitzungsdaten eines MQTT-Clients umfassen die vom Client erstellten Abonnements und alle Daten dass der Kunde mit QoS>0 empfangen würde. Der Client kann den MQTT Broker dazu bringen, seine Sitzungsdaten über Verbindungen zu speichern.
MQTT 3.1.1 Clients können Clean Session = 0 festlegen, um den MQTT Broker zu bitten, seine Sitzungsinformationen über Verbindungen gespeichert.
Für MQTT 3.1.1:
const conn_params = {
Kunden Id : "kristallmq_" + Math.random().toString(36).substring(2, 12),
sauber: wahr,
}
};
MQT 5 Clients können Clean Start = 0 und Session Expiry Interval = 'N' festlegen, um die MQT Broker hält seine Session-Informationen über Verbindungen für 'N' Sekunden gespeichert.
Für MQTT 5:
// MQTT Anschlussmöglichkeiten für MQTT 5
const conn_params = {
clientId: "kristallmq_" + Math.random().toString(36).substring(2, 12),
sauber: wahr,
Protokoll Ausführung: 5 // MQTT angeben 5 Protokollversion
};
Maximal Packungsgröße
MQTT5 Client kann den MQTT Broker anfordern, nur Datenpakete weniger als ein bestimmtes zu senden. Größe, indem Sie es so einstellen:
Für MQTT 5:
const conn_params = {
Kunden Id : "kristallmq_" + Math.random().toString(36).substring(2, 12),
ProtokollVersion: 5,
Eigenschaften: {\cHFFFF}
Maximale Paketgröße: 1024, // Maximale Paketgröße
}
};
Daten senden
Effizient Daten an mehrere Abonnenten verteilen, indem sie an benannte Abonnenten publiziert werden Themen mit dem folgenden Code-Snippet:
Für MQTT 3.1.1:
client.publish('testtopic', 'Hello, CrystalMQ!', (err) => {\cHFFFF}
wenn (err)
Konsole.error('Failed to publiziert message:', err);
} auch
consult.log('Nachricht veröffentlicht');
}
})
Für MQTT 5:
client.publish('testtopic', 'Hallo, CrystalMQ', {
qos: 1, // Qualität der Servicestufe (0, 1, oder 2)
behalten: falsch, // Flagge behalten
Eigenschaften: { // MQTT 5 Eigenschaften
payloadFormatIndicator: 1,
messageExpiryInterval: 60, // Nach Ablaufintervall in Sekunden
ThemaAlias: 1,
AntwortTopic: 'ResponseTopic',
KorrelationData: Buffer.from('correlationData'),
Benutzer Eigenschaften: {\cHFFFF}
'Taste': 'Wert',
},
}
}, (err) => {\cHFFFF}
wenn (err)
Konsole.error('Failed to publiziert message:', err);
} auch
consult.log('Nachricht veröffentlicht');
}
})
Festhaltene Nachrichten einstellen
Aktivieren Sie die Rückhalte-Flag bei der Veröffentlichung einer Nachricht, um sicherzustellen, dass der Broker speichert die Letzter Beitrag Nachricht für jedes Thema. Dies garantiert, dass neue Abonnenten die neuesten erhalten Nachricht beim Verbinden.
Um dies zu implementieren, verwenden Sie den folgenden Code snippet:
client.publish('testtopic', 'Hallo, CrystalMQ', { halt: true },
(err) =>
{\cHFFFF}
wenn (err)
Konsole.error('Failed to publiziert message:', err);
} auch
consult.log('Message veröffentlicht mit behalten-Flag gesetzt auf true');
}
})
QoS Levels angeben
MQTT bietet drei Ebenen der Qualität des Dienstes (QoS) für die Nachrichtenlieferung:
client.publish('testtopic', 'Hello, Crysql MQ!', { qos: 1 }); // 0 oder 1 oder 2
Veröffentlichen von Eigenschaften sind Attribute oder Einstellungen, die mit MQTT verbunden sind Nachrichten, die zusätzlichen Kontext oder Anweisungen für die Bearbeitung der Nachricht durch die Broker oder andere Kunden. Diese Eigenschaften können Nachrichtenablaufintervall, QoS-Ebene, Inhaltstyp, Antwortthema, etc. Sie ermöglichen eine genauere Kontrolle darüber, wie Nachrichten veröffentlicht und verarbeitet, um eine effiziente und zuverlässige Nachrichtenlieferung in MQTT sicherzustellen Kommunikation.
Nachricht abbrechen Intervall
Die Eigenschaft 'Message Ablaufintervall' setzt die Lebensdauer einer Nachricht in Sekunden; wenn undelivered innerhalb dieser Zeit, der Broker verworfen es. MQTT5 unterstützt diese Funktion. MQTT5 Clients können dies während der Veröffentlichung von Daten festlegen.
Für MQTT 5:
const topic = "testtopic";
const payload = "Hallo, CrystalMQ!"
const payload_prop = {
Qos: 1,
Eigenschaften: {\cHFFFF}
messageExpiryInterval: 60, // Nach Ablaufintervall in Sekunden
}
};
client.publish(topic, payload, payload_prop, (err) => {\cHFFFF}
wenn (err)
Konsole.error('Failed to publiziert message:', err);
} auch
consult.log('Message veröffentlicht mit behalten-Flag gesetzt auf true');
}
})
Thema Alias
Die 'Topic Alias'-Eigenschaft ermöglicht es Kunden, einen kurzen Alias anstelle eines vollständigen Themas zu verwenden Name, reduziert die Größe des Nachrichtenpakets und verbessert die Netzeffizienz.
Für MQTT 5:
const topic = "testtopic";
const payload = "Hallo, CrystalMQ!"
const payload_prop = {
Qos: 1,
Eigenschaften: {\cHFFFF}
TopicAlias: 1, // Legen Sie das Thema Alias für diese Nachricht
}
};
client.publish(topic, payload, payload_prop, (err) => {\cHFFFF}
wenn (err)
Konsole.error('Failed to publiziert message:', err);
} auch
consult.log('Message veröffentlicht mit behalten-Flag gesetzt auf true');
}
})
Eigenschaften, die mit MQTT PUBLISH verbunden sind, verbessern die Nachrichtenhandling, Bereitstellung von Kontext oder Anweisungen für Makler und Kunden. Diese Eigenschaften, einschließlich Meldung Ablauf Intervalle und Themen-Aliase, optimieren Nachrichtenversand und Netzwerkbandbreite.
Anmeldung zum Thema Filter
Um von anderen Clients veröffentlichte Daten zu erhalten, muss dieser Client abonnieren Matching Thema Filter so:
client.subscribe('testtopic', (err) => {\cHFFFF}
wenn (err)
Konsole.error('Abonnementfehler:', err);
} auch
consol.log(`Beschrieben');
}
})
Dieses Thema Filter kann mit einem genauen Thema übereinstimmen oder es kann Wildcards wie # und +
Datenerfassung
Um die für die Abonnements gesendeten Daten zu erhalten, muss eine Callback-Funktion definiert werden wie dies:
client.on('connect', function () {\cHFFFF}
Konsole.log('Connected to MQTT broker');
// Ein Thema eintragen
client.subscribe('testtopic', { qos: 1 }, function (err) {
wenn (err)
Konsole.error('Failed to abonnieren thematisch:', err);
} auch
Konsole.log('Beschrieben zum Thema');
}
})
})
Anmeldung von Themen
Um die Aktualisierungen eines Themas zu stoppen, verwenden Sie den zur Abmeldung vorgesehenen Code.
client.unsubscribe('testtopic', (err) => {
wenn (err)
Konsole.log('Fehler abmelden:', err)
zurück
}
Konsole.log(`unsubscribed.`)
})
Stellen Sie sicher, dass die Verbindung Ihres Kunden mit dem Broker ordnungsgemäß beendet wird, um Probleme zu vermeiden und Ressourcenlecks auf beiden Seiten, wodurch die Systemstabilität erhalten bleibt.
Verwenden Sie den folgenden Code, um den Client vom Broker zu trennen:
Client.end();
Sie haben die Möglichkeit, Ihre eigene komplizierte Geschäftslogik zu entwickeln und anzupassen innerhalb diese Umwelt, die sie genau auf Ihre spezifischen Bedürfnisse und Ziele zugeschnitten.
Individuelle Kundenidentifikation
Jedem Gerät eine eindeutige Client-ID zu genauen Identifizierungszwecken zuweisen. Für private Bereitstellungen, stellen Sie sicher, dass jeder Client erhält eine eindeutige ID, während in gemeinsamen Umgebungen, einen zufälligen String in Client einfügen IDs, um Einzigartigkeit zu gewährleisten.
Strukturierte Datenorganisation
Planen Sie Ihre Datenstruktur nachdenklich. Ob der Umgang mit Klartext, JSON Datenformate oder numerische Daten sorgen dafür, dass das Design auf Ihre Bedürfnisse zugeschnitten ist die spezifischen Bedürfnisse der Anwendung.
Robuste Fehlerbehandlung
Implementieren Sie eine starke Fehlerverwaltung, um MQTT-Verbindungsausfälle zu bewältigen, Abonnement Probleme und Nachrichtenveröffentlichungsfehler effektiv.
Sicherung von Anmeldeinformationen
Schutz sensibler Informationen wie Benutzernamen, Passwörter und Client-IDs durch nicht Sie in Ihrem Quellcode festcodieren. Verwenden Sie Umgebungsvariablen oder sicher Konfiguration Dateien statt.
Regelmäßige Prüfung und Überwachung
Kontinuierlich testen Sie MQTT-Kommunikation und überwachen Sie Client Metriken wie z.B. Anschluss Status, Nachrichtendurchsatz und Fehlerraten, um Probleme schnell zu identifizieren und zu beheben.
Optimierung des Sitzungsmanagements
Wählen Sie zwischen sauberen und persistenten Sessions (`clean: true` oder `clean: false`) basierend auf Ihre Notwendigkeit, Abonnements und gelöschte Nachrichten über Client-Verbindungen zu behalten.
Reconnect auf Disconnect
Code hinzufügen, um zu versuchen, die Verbindung zum MQTT Broker, wenn es ein unerwartetes Ausschalten. Dies wird sicherstellen, dass Ihr Kunde verbunden bleibt und nicht verliert alle Daten.
Laden Sie den vollständigen Code für den Client herunter, der die Node JS MQTT Client Library verwendet, um die Verbindung zu verbinden mit unseren Messaging-Broker oder einen Broker Ihrer Wahl.
Für MQTT 3.1.1:
const mqtt = bed('mqt');
// const fs = bed('fs');
const broker Url = 'mqtt://public-mqtt-broker.bevywise.com';
const conn_params = {
Kunden Id : "kristallmq_" + Math.random().toString(36).substring(2, 12),
// Lebewesen: 60, // in Sekunden am Leben bleiben
// Gastgeber : "public-mqtt-broker.bevywise.com" // Gastgeber
// Protokoll: 'mqts', // Protokoll
// sauber: wahr, // Saubere Sitzung
// Benutzername : "some username", // mqtt username
// Passwort : "some passwort", // mqtt passwort
// will:
// Thema: 'lastwill', // Will zum Thema
// Nutzlast: 'Goodbye, CrystalMQ!' // wird Nachricht
//
// ca. [fs.readFileSync('/path/to/root.crt')],
};
const pubInterval = 2000;
const client = mqt.connect(brokerUrl, conn_params);
const topic = 'testtopic'; // publizieren
const message = "Hello CrystalMQ !" // veröffentlichte Nachricht
client.on('connect', () => {
Konsole.log('Connected to MQTT broker');
setInterval(((() => {\cHFFFF}
client.publish(topic, message, (err) => {\cHFFFF}
wenn (err)
Konsole.error('Error-Veröffentlichungsnachricht:', err);
} auch
Konsole.log('Message veröffentlicht:', message);
}
})
}, pubInterval;
})
client.on('message', (topic, message) => {\cHFFFF}
Konsole.log(`Received message: ${message.toString()} zum Thema:
${topic}`;
})
client.on('error', (err) => {\cHFFFF}
Konsole.error('Error: ', err);
})
client.on('close', () => {\cHFFFF}
Konsole.log('Disconnected from MQTT broker');
})
client.on('reconnect', () => {\cHFFFF}
Konsole.log('Reconnecting to MQTT broker...');
})
client.on('offline', () => {
Konsole.error('MQTT Client ist offline');
})
Für MQTT 5
const mqtt = bed('mqt');
const broker Url = 'mqtt://public-mqtt-broker.bevywise.com';
const conn_params = {
clientId: "kristallmq_" + Math.random().toString(36).substring(2, 12),
ProtokollVersion: 5, // MQTT angeben 5 Protokollversion
sauber: wahr, // Saubere Sitzung
// Uncoming und setzen diese Optionen bei Bedarf
// halten: 60, // Leben in Sekunden
// Benutzername: "some username", // MQTT username
// Passwort: "some password", // MQTT-Passwort
// will:
// Thema: 'lastwill', // Will zum Thema
// Nutzlast: 'Goodbye, CrystalMQ!', // Will Nachricht
//
// ca. [fs.readFileSync('/path/to/root.crt')],
};
const pubInterval = 2000;
const client = mqt.connect(brokerUrl, conn_params);
const topic = 'testtopic'; // Publish topic
const message = "Hello CrystalMQ!"; // Veröffentlichte Nachricht
client.on('connect', () => {
Konsole.log('Connected to MQTT broker');
setInterval(((() => {\cHFFFF}
client.publish(topic, message, { qos: 1 }, (err) => {\cHFFFF}
wenn (err)
Konsole.error('Error-Veröffentlichungsnachricht:', err);
} auch
Konsole.log('Message veröffentlicht:', message);
}
})
}, pubInterval;
})
client.on('message', (topisch, Nachricht, Paket) => {\cHFFFF}
Konsole.log(`Received message: ${message.toString()} zum Thema:
${topic}`;
// Handle MQTT 5 Eigenschaften bei Bedarf
Konsole.log('Properties:', packet.properties);
})
client.on('error', (err) => {\cHFFFF}
Konsole.error('Error: ', err);
})
client.on('close', () => {\cHFFFF}
Konsole.log('Disconnected from MQTT broker');
})
client.on('reconnect', () => {\cHFFFF}
Konsole.log('Reconnecting to MQTT broker...');
})
client.on('offline', () => {
Konsole.error('MQTT Client ist offline');
})
Schritte zum Erstellen einer ausführbaren Datei mit `pkg `
ANHANG `pkg` global installieren
Öffnen Sie Ihr Terminal oder die Eingabeaufforderung und führen Sie den folgenden Befehl aus, um `pkg` zu installieren:
npm install -g pkg
2. Bereiten Sie Ihre Node.js Anwendung
Stellen Sie sicher, dass Ihr `package.json` eine `bin` Eigenschaft enthält, die auf Ihr Hauptskript verweist. Für zum Beispiel, wenn Ihr Hauptskript `index.js` ist, Ihr Paket. json`s sollte etwas sehen wie dies:
{\cHFFFF}
"Name": "Ihr-App-Name",
"Version": "1.0.0",
"main": "index.js",
"bin": "index.js",
"Skripte": {\cHFFFF}
"start": "node index.js"
},
"Abhängigkeiten": {\cHFFFF}
"mqt": "^4.2.8"
}
}
3. Executables erstellen
Verwenden Sie `pkg`, um Ausführbare für verschiedene Betriebssysteme zu erstellen. Führen Sie folgendes aus Befehle in Ihrem Terminal:
pkg. --targets node16-linux-x64,node16-win-x64
Dieser Befehl gibt die Ziele als Node.js-Version 16 für Linux und Windows an 64-Bit Architekturen. Passen Sie die Version und Architektur nach Bedarf an.
4. Verteilen Sie Ihre Ausführbaren
Nachdem Sie den Befehl `pkg` ausgeführt haben, finden Sie die Ausführbaren im aktuellen Verzeichnis. Du kann diese ausführbaren Dateien an Benutzer verteilen. Sie werden auf Ihrer Grundlage benannt Anwendungsbereich Name und Zielbetriebssystem wie `your-app-name-linux` und `your-app-name-win.exe`.
Verbinden Sie Ihren Kunden mit unserem hochmodernenMQTT Brokeroder einen Broker Ihrer Wahl. Diese leistungsstarke Kombination sorgt für optimale Leistung und Zuverlässigkeit für alle Ihre Messaging-Anforderungen, den Weg für eine robuste und effiziente System Integration.