Node.js MQTT Client Setup

Text geknüpft
Einleitung

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.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden:

  • Node.js von nodejs.org herunterladen und installieren
  • ! Sie ein neues Verzeichnis für Ihr Projekt und initialisieren Sie ein neues Node. Das Projekt "npm init"
  • ANHANG Sie npm, um die MQTT. js-Bibliothek zu installieren, die für die MQTT-Kommunikation Node.js

npm install mqtt --save

Verbindung zum MQTT Broker

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);

MQTT konfigurieren Authentifizierung

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);

Erweiterte Funktionen

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
}
};

Publizieren

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:

  • QoS 0 (am meisten einmal)
  • QoS 1 (zumindest einmal)
  • QoS 2 (genau einmal)

Geben Sie bei der Veröffentlichung von MQTT-Nachrichten den erforderlichen QoS-Level an:

client.publish('testtopic', 'Hello, Crysql MQ!', { qos: 1 }); // 0 oder 1 oder 2

VERÖFFENTLICHUNGEN Eigenschaften

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

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.`)
})

Den Client deaktivieren

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();

Bauen Sie Ihre Business Logic

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.

Implementierung von Best Practices

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.

Code herunterladen

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');
})

Ausführender Bundle erstellen

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.