Diese Dokumentation bietet einen umfassenden Leitfaden zum AnschlussMQTT Kundenzu unsMQTT Broker(CrystalMQ) oder jeder Broker Ihrer Wahl mit .NET. Es bietet Schritt für Schritt Anweisungen, beginnend mit der Einrichtung der Entwicklung Umwelt und umfasst die Einrichtung Verbindungen über TCP, sichere Ports und WebSocket Protokolle. Zusätzlich enthält es Richtlinien zur KonfigurationMQTT-Authentifizierung, eine sichere und zuverlässige Verbindung zwischen Ihren .NET-Anwendungen und der Broker.
Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden:
Beginnen Sie Ihre Entwicklungsumgebung durch die Installation der notwendigen. NET Bibliotheken. Sie benötigen die MQTT .NET Bibliothek, um zu erleichternMQTKommunikation in Ihr . NET-Anwendung.
dotnet hinzufügen paket MQTTnet --version ANHANG
Erstellen Sie eine neue . NET Konsolenanwendung.
Windows:
dotnet neue Konsole -n CrystalMQ
Dieser Abschnitt hat Code-Snippets von verschiedenen Möglichkeiten, um mit MQTT Broker zu verbinden. Stellen Sie sicher, dass der MQTT Broker unterstützt den Verbindungstyp, den Sie verwenden möchten. Auch das entsprechende erhalten Verbindungsparameter 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.3.1:
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_",10))
. MitTcpServer("public-mqtt-broker.bevywise.com", 1883)
.Build();
// MQTT-Client erstellen
var factory = new MqttFactory();
var mqtClient = factory.CreateMqttClient();
mqtClient.UseConnectedHandler(async e =>
{\cHFFFF}
Console.WriteLine('Connected erfolgreich mit MQTT Broker.");
})
// Anschluss an den MQTT-Broker
warten mqtClient.ConnectAsync(Optionen);
Für MQTT 5:
// Client erstellen
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_",10))
. MitTcpServer("public-mqtt-broker.bevywise.com", 1883)
. MitProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V500) // Verwendung
MQTT Version 5.0
.Build();
// MQTT-Client erstellen
var factory = new MqttFactory();
var mqtClient = factory.CreateMqttClient();
mqtClient.UseConnectedHandler(async e =>
{\cHFFFF}
Console.WriteLine('Connected erfolgreich mit MQTT Broker.");
})
// Anschluss an den MQTT-Broker
warten mqtClient.ConnectAsync(Optionen);
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.
// Macro ADDRESS definieren
#define ADDRESS "public-mqtt-broker.bevywise.com:8883"
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_", 10))
. MitTcpServer(GetHostFromAdresse(ADDRESS), GetPortFromAdresse(ADDRESS))
.WithTls(neue MqtClientOptionenBuilderTlsParameter
{\cHFFFF}
UseTls = true,
Zertifikate = neue Liste
LassenUntrustedCertificates = true, // In der Produktion falsch eingestellt
IgnorierenCertificate ChainErrors = true, // In der Produktion falsch eingestellt
IgnorierenCertificateRevokation Fehler = true // In die falsche
Produktion
})
.Build();
// MQTT-Client erstellen
var factory = new MqttFactory();
var mqtClient = factory.CreateMqttClient();
mqtClient.UseConnectedHandler(async e =>
(STÖHNT)
Console.WriteLine('Connected erfolgreich mit MQTT Broker.");
})
// Anschluss an den MQTT-Broker
mqtClient.ConnectAsync(Optionen);
Setzen Sie TLS-Parameter vor dem Aufruf der MQTTClient_connect, um den Client mit dem MQTTClient_connect zu verbinden MQTT Broker sicher über TLS.
Wenn der MQTT Broker in einem vertrauenswürdigen Server und der Serververifikation gehostet wird ist nicht erforderlich, der folgende Code kann verwendet werden, um TLS-Optionen einzustellen:
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_", 10))
. MitTcpServer(GetHostFromAdresse(ADDRESS), GetPortFromAdresse(ADDRESS))
.WithTls(neue MqtClientOptionenBuilderTlsParameter
{\cHFFFF}
UseTls = true,
LassenUntrustedCertificates = true, // Untrustierte Zertifikate zulassen
IgnorierenCertificate ChainErrors = true, // Ignorieren von Zertifikatskettenfehlern
IgnorierenCertificateRevokation Fehler = true // Ignorieren von Zertifikatsanruf
Fehler
})
.Build();
// MQTT-Client erstellen
var factory = new MqttFactory();
var mqtClient = factory.CreateMqttClient();
mqtClient.UseConnectedHandler(async e =>
{\cHFFFF}
Console.WriteLine('Connected erfolgreich mit MQTT Broker.");
})
// Anschluss an den MQTT-Broker
warten mqtClient.ConnectAsync(Optionen);
Wenn der MQTT Broker ein Serverzertifikat aus einer Trusted CA ausgestellt hat, dann kann das Server-Zertifikat mit:
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_", 10))
. MitTcpServer(GetHostFromAdresse(ADDRESS), GetPortFromAdresse(ADDRESS))
.WithTls(neue MqtClientOptionenBuilderTlsParameter
{\cHFFFF}
UseTls = true,
Zertifikate = neue Liste
Zertifikat Rechtlicher Handler = Kontext =>
(STÖHNT)
// Erkennen Sie den Server
zurück zur Übersicht SslPolicy Fehler ==
System.Net.Security.SslPolicyErrors. Keine
},
LassenUntrustedCertificates = false, // Nicht vertrauenswürdig angewandt
Zertifikat
IgnorierenCertificate ChainErrors = falsch, // Nicht ignorieren Zertifikatskette
Fehler
IgnorierenCertificateRevokation Fehler = falsch // Nicht ignorieren Zertifikat
Ich bin nicht da.
})
.Build();
// MQTT-Client erstellen
var factory = new MqttFactory();
var mqtClient = factory.CreateMqttClient();
mqtClient.UseConnectedHandler(async e =>
(STÖHNT)
Console.WriteLine('Connected erfolgreich mit MQTT Broker.");
})
// Anschluss an den MQTT-Broker
mqtClient.ConnectAsync(Optionen);
Hat der MQTT Broker ein selbstsigniertes Server-Zertifikat, so kann das Server-Zertifikat werden mit dem Root-Zertifikat aus dem MQTT Broker überprüft:
// Root-Zertifikat laden
var rootCert = new X509Certificate2("path_of_the_root_file");
// MQTT Client Optionen konfigurieren
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_",10))
. MitTcpServer("public-mqtt-broker.bevywise.com", 8883)
.WithCredentials("highlysecure", "N4xnpPTru43T8Lmk") // Benutzername hinzufügen und
Passwort vergessen?
.WithTls(neue MqtClientOptionenBuilderTlsParameter
{\cHFFFF}
UseTls = true,
Zertifikate = neue Liste
LassenUntrustedCertificates = true, // Deaktivierte Zertifikatskette
ANHANG
IgnorierenZertifikat ChainErrors = true, // Ignorieren der Zertifikatskette
Fehler
IgnorierenCertificateRevokation Fehler = true // Ignorieren von Zertifikat
Ich bin nicht da.
})
.Build();
// MQTT-Client erstellen
var factory = new MqttFactory();
var mqtClient = factory.CreateMqttClient();
mqtClient.UseConnectedHandler(async e =>
(STÖHNT)
Console.WriteLine('Connected erfolgreich mit MQTT Broker.");
})
// Anschluss an den MQTT-Broker
mqtClient.ConnectAsync(Optionen);
MQTT über WebSocket
Definieren Sie die MQTT Broker Adresse wie diese, um den Client über WebSocket zu verbinden.
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_",10))
. MitWebSocketServer("ws://public-mqtt-broker.bevywise.com:10443/mqtt") //
WebSocket Server URI verwenden
.Build();
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.
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_",10))
. MitWebSocketServer("ws://public-mqtt-broker.bevywise.com:11443/mqt") //
WebSocket Server URI verwenden
.Build();
MQTT konfigurieren Authentifizierung
Um mit MQTT Broker zu verbinden, die MQTT Username und MQTT Password benötigt Authentifizierung, Fügen Sie Benutzername und Passwort zu den folgenden Verbindungsoptionen hinzu:
// MQTT Client Optionen konfigurieren
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_",10))
. MitTcpServer("public-mqtt-broker.bevywise.com", 1883)
.WithCredentials("username", "password") // Benutzername und Passwort hinzufügen
.Build();
// MQTT-Client erstellen
var factory = new MqttFactory();
var mqtClient = factory.CreateMqttClient();
mqtClient.UseConnectedHandler(async e =>
{\cHFFFF}
Console.WriteLine('Connected erfolgreich mit MQTT Broker.");
})
// Anschluss an den MQTT-Broker
warten mqtClient.ConnectAsync(Optionen);
Das letzte Testament einrichten
Konfigurieren derLetzter Wille und Testamenteine Nachricht anzugeben, die der Broker veröffentlichen wird, wenn der Client unerwartet trennt. Dies hilft anderen Abonnenten den Status des abgeschalteten Clients zu informieren.
Verwenden Sie den folgenden Code, um Last Will in den Verbindungsoptionen festzulegen:
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_",10))
. MitTcpServer("public-mqtt-broker.bevywise.com", 1883) // Verwenden Sie Ihren Broker
Adresse und Hafen
. MitWillMessage(neue MqtApplicationMessageBuilder()
.WithTopic("will/topic")
.WithPayload("Client1 hat unerwartet abgeschaltet")
. MitQualityOfServiceLevel(MqtQualityOfServiceLevel.AtLeastOnce)
.WithRetainFlag(true)
.Build()
.Build();
Adjusting Keep Alive
MQTpflegt Client-Broker-Verbindungen mit einerIch bin nicht da.Mechanismus. Einstellen des Halteintervalls, um zu kontrollieren, wie häufig sendet der Client PINGREQ-Nachrichten an den Broker.
Ändern Sie den untenstehenden Code entsprechend Ihren Anforderungen:
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_",10))
. MitTcpServer("public-mqtt-broker.bevywise.com", 1883) // Verwenden Sie Ihre
Broker Adresse und Hafen
. MitWillMessage(neue MqtApplicationMessageBuilder()
.WithTopic("will/topic")
.WithPayload("Client1 hat unerwartet abgeschaltet")
. MitQualityOfServiceLevel(MqtQualityOfServiceLevel.AtLeastOnce)
.WithRetainFlag(true)
.Build()
.Build();
Sitzungspersistenz konfigurieren
Sitzungsdaten einerMQT !die Abschriften des Kunden und alle Daten, die die Client würde mit QoS>0 empfangen. Der Client kann dieMQT Brokerseine Sitzungsdaten über Verbindungen speichern.
MQTT 3.1.1 Clients können Clean Session = 0 festlegen, um den MQTT Broker zu bitten, seine Sitzung Informationen über Verbindungen gespeichert.
Für MQTT 3.1.1:
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_", 10))
. MitTcpServer("public-mqtt-broker.bevywise.com", 1883) // Verwenden Sie Ihre
Broker Adresse und Hafen
.WithCleanSession(false) // CleanSession auf false setzen, um Sitzung zu halten
Informationen
. MitProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V311) // Verwendung
MQTT Version 3.1.1
.Build();
MQT 5 Clients können Clean Start = 0 und Session Expiry Interval = 'N', um den MQTT Broker zu bitten, seine Sitzungsinformationen über Verbindungen für 'N' Sekunden.
Für MQTT 5:
var Sitzung ExpiryInterval = 3600; // Sitzungsablaufintervall bis 3600 festlegen
Sekunden (1 Stunde)
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_", 10))
. MitTcpServer("public-mqtt-broker.bevywise.com", 1883) // Verwenden Sie Ihre
Broker Adresse und Hafen
.WithCleanStart(false) // CleanStart auf false setzen
. WithSessionExpiryInterval(((uint)sessionExpiryInterval) // Sitzung einstellen
Ausführendes Intervall
. MitProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V500) // Verwendung
MQTT Version 5.0
.Build();
Maximal Packungsgröße
MQTT5 Client kann den MQTT Broker anfordern, nur Datenpakete weniger als ein spezifische Größe, indem Sie es so einstellen:
Für MQTT 5:
var maxPacketSize = 1024; // Beispiel: Maximale Paketgröße auf 1024 einstellen
Bytes
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_", 10))
. MitTcpServer("public-mqtt-broker.bevywise.com", 1883) // Verwenden Sie Ihre
Broker Adresse und Hafen
. MitReceiveMaximum(maxPacketSize) // Setzen Sie ReceiveMaximum zu begrenzen Paket
Größe
. MitProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V500) // Verwendung
MQTT Version 5.0
.Build();
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:
mqtClient.UseConnectedHandler(async e =>
{\cHFFFF}
Console.WriteLine('Connected erfolgreich mit MQTT Broker."); //
Eine Nachricht veröffentlichen
var message = new MqttApplicationMessageBuilder()
.WithTopic("cmq/topic")
.WithPayload("Hello CrystalMQ")
. Mit genauen Angaben
.WithRetainFlag()
.Build();
warten mqtClient.PublishAsync(message);
Console.WriteLine("Message veröffentlicht.");
})
Für MQTT 5:
mqtClient.UseConnectedHandler(async e =>
{\cHFFFF}
Console.WriteLine('Connected erfolgreich mit MQTT Broker.");
// Mitteilung veröffentlichen
var message = new MqttApplicationMessageBuilder()
.WithTopic("cmq/topic")
.WithPayload("Hello CrystalMQ")
. MitQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce)
.WithRetainFlag(true)
.Build();
var result = erwartet mqtClient. PublishAsync(message);
Console.WriteLine($"Message veröffentlicht (Ergebnis:
{result.ReasonString}).");
})
Festhaltene Nachrichten einstellen
Aktivieren Sie die Rückhalte-Flag bei der Veröffentlichung einer Nachricht, um sicherzustellen, dass der Broker speichert die letzte Nachricht für jedes Thema. Dies garantiert, dass neue Abonnenten die jüngste Nachricht erhalten verbinden.
Um dies zu implementieren, verwenden Sie den folgenden Code snippet:
var message = new MqttApplicationMessageBuilder()
.WithTopic("cmq/topic")
.WithPayload("Hello CrystalMQ")
. MitQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce)
.WithRetainFlag(true) // Aktivieren Sie die Flagge
.Build();
QoS Levels angeben
MQTT bietet drei Ebenen der Qualität des Dienstes (QoS) für die Nachrichtenlieferung:
Geben Sie bei der Veröffentlichung von MQTT den erforderlichen QoS-Level an Nachrichten mit diesem Code:
// Eine Nachricht mit QoS 0 veröffentlichen
var messageQoS0 = new MqtApplicationMessageBuilder()
.WithTopic("cmq/topic")
.WithPayload("QoS 0: Hallo CrystalMQ")
. MitQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce)
.WithRetainFlag(true) // Retain Flag kann bei Bedarf eingestellt werden
.Build();
// Eine Nachricht mit QoS 1 veröffentlichen
var messageQoS1 = new MqtApplicationMessageBuilder()
.WithTopic("cmq/topic")
.WithPayload("QoS 1: Hallo CrystalMQ")
. MitQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtLeastOnce)
.WithRetainFlag(true) // Retain Flag kann bei Bedarf eingestellt werden
.Build();
// Eine Nachricht mit QoS 2 veröffentlichen
var messageQoS2 = new MqtApplicationMessageBuilder()
.WithTopic("cmq/topic")
.WithPayload("QoS 2: Hello CrystalMQ")
. MitQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce)
.WithRetainFlag(true) // Retain Flag kann bei Bedarf eingestellt werden
.Build();
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:
var message = new MqttApplicationMessageBuilder()
.WithTopic("test/topic")
.WithPayload("Hallo, MQTT!")
. MitMessageExpiryInterval(300) // 300 Sekunden = 5 Minuten
.Build();
Thema Alias
Die Eigenschaft 'Topic Alias' ermöglicht es Kunden, einen kurzen Alias anstelle eines vollen Name des Themas, die Größe von Nachrichtenpaketen zu reduzieren und die Netzeffizienz zu verbessern.
Für MQTT 5:
var message = new MqttApplicationMessageBuilder()
.WithTopic("cmq/topic")
.WithPayload("Hello, CrystalMQ")
.WithTopicAlias(1) // Alias für 'cmq/topic '
.Build();
Eigenschaften, die mit MQTT PUBLISH verbunden sind, verbessern das Nachrichtenhandling, Bereitstellung von Kontext oder Anweisungen für Broker und Kunden. Diese Eigenschaften, einschließlich Nachrichten-Ablaufintervalle und Themen-Aliase, optimieren die Nachrichten-Lieferung und Netzwerkbandbreite.
Anmeldung zum Thema Filter
Um von anderen Clients veröffentlichte Daten zu erhalten, muss dieser Client abonnieren Sie ein passendes Thema Filter wie folgt:
mqtClient.UseConnectedHandler(async e =>
{\cHFFFF}
Console.WriteLine('Connected erfolgreich mit MQTT Broker.");
// Ein Thema eintragen
warten mqtClient.SubscribeAsync(neu
MQTTnet.Client.Abonnieren.MqttClientAbonnieren OptionenBuilder()
.WithTopicFilter(f => f.WithTopic("cmq/topic")).Build());
Console.WriteLine("Beschrieben zum Thema.");
})
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 folgt:
mqtClient.UseApplicationMessageReceivedHandler(e =>
{\cHFFFF}
Console.WriteLine($"Receive message zum Thema
'{e.ApplicationMessage.Topic}':
{Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}");
})
Anmeldung von Themen
Um die Aktualisierungen eines Themas zu stoppen, verwenden Sie den zur Abmeldung vorgesehenen Code.
// Abonnieren des Themas
mqtClient.UnsubscribeAsync("cmq/topic");
Console.WriteLine("Bezeichnet vom Thema.");
Stellen Sie eine ordnungsgemäße Beendigung der Verbindung Ihres Kunden mit dem Broker zu Vermeidung von Problemen und Ressourcenlecks auf beiden Seiten, wodurch die Systemstabilität beibehalten wird.
Verwenden Sie den folgenden Code, um den Client vom Broker zu trennen:
mqtClient.UseDisconnectedHandler(async e =>
(STÖHNT)
Console.WriteLine("Disconnected from MQTT broker.");
// Optionale Handhabe hier die Reconnection-Logik
})
mqtClient.DisconnectAsync();
Sie haben die Möglichkeit, Ihre eigene komplizierte Geschäftslogik zu entwickeln und anzupassen in dieser Umgebung, genau auf Ihre spezifischen Bedürfnisse und Ziele zugeschnitten.
Einzigartiges Kunden-ID-Management
Jedem Gerät eine eindeutige Client-ID zur ordnungsgemäßen Identifizierung zuweisen. Privat Fälle, individuelle IDs an einzelne Kunden zuweisen. In gemeinsamen Umgebungen, befestigen Sie eine zufällige zu jeder Client-ID, um die Einzigartigkeit zu gewährleisten.
Datendesign
Planen Sie Ihre Datenstruktur im Voraus. Ob es um Klartext geht oder JSON-formatierte Daten oder Zahlen, sorgen für eine effektive Gestaltung von Daten, die zu Ihrem Anwendung/Verwendung/benötigt.
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 stattdessen Umgebungsvariablen oder sichere Konfigurationsdateien.
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 verwendet wird. NET MQTT Client-Bibliothek, um mit unserem Broker oder einem Broker Ihrer Wahl zu verbinden.
Für MQTT 3.1.1:
mit System;
mit System. Sammlungen. Generisch;
Verwendung System.Security.Cryptography.X509Certificates;
mit System. Text:
mit System. Threading. Aufgaben;
mit MQTTnet;
mit MQTTnet.Client
Klasse Programm
{\cHFFFF}
statischer Async Task Main(string[] args)
{\cHFFFF}
// Root-Zertifikat laden
//var rootCert = new X509Certificate2("path_of_the_root_file");
// MQTT Client Optionen konfigurieren
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_",10))
. MitTcpServer("public-mqtt-broker.bevywise.com", 1883) // TLS-Änderung aktivieren
Hafen 8883
//.WithWebSocketServer("ws://public-mqtt-broker.bevywise.com:10443/mqtt") //
Verwenden Sie WebSocket Server URI und aktivieren Sie TLS Änderung Port 11443
// .WithCredentials("username", "password") // Benutzername und Passwort hinzufügen
//
// .WithTls(neue MqtClientOptionenBuilderTlsParameter
~
// UseTls = true,
// Zertifikate = neue Liste
// LassenUntrusted Zertifikate = true, // Deaktivierte Zertifikatskette
ANHANG
// IgnorierenCertificate ChainErrors = true, // Ignorieren der Zertifikatskette
Fehler
// IgnorierenZertifikat Revokation Fehler = true // Ignorieren von Zertifikat
Ich bin nicht da.
//
.Build();
// MQTT-Client erstellen
var factory = new MqttFactory();
var mqtClient = factory.CreateMqttClient();
// Client-Events ausschalten
mqtClient.ConnectedAsync += async e=>
(STÖHNT)
Console.WriteLine('Connected erfolgreich mit MQTT Broker.");
Ein Das ist ein Thema
Warten Sie mqtClient. SubscribeAsync(neu
MqttClientSubscribeOptionenBuilder(). MitTopicFilter(f)
f.WithTopic("cmq/topic")).Build());
Console.WriteLine("Beschrieben zum Thema".
// Mitteilungen veröffentlichen
var message = new MqttApplicationMessageBuilder()
.WithTopic("cmq/topic")
.WithPayload("Hello CrystalMQ")
.Build();
warten mqtClient.PublishAsync(message);
Console.WriteLine("Message veröffentlicht.");
};
mqtClient.DisconnectedAsync += async e =>
(STÖHNT)
Console.WriteLine("Disconnected from MQTT Broker.");
erwartete Aufgabe.Delay(TimeSpan.FromSeconds(5));
Das ist doch alles.
(STÖHNT)
mqtClient.ConnectAsync(Optionen);
}
Fangmenge
(STÖHNT)
Console.WriteLine("Reconnecting fail.");
}
};
mqtClient.ApplicationMessageReceivedAsync += e =>
(STÖHNT)
Console.WriteLine($"Received message:
{System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}");
zurück zur Übersicht In den Warenkorb
};
// Anschluss an den MQTT-Broker
mqtClient.ConnectAsync(Optionen);
Englisch Sie haben die Möglichkeit
Console.WriteLine("Druckgeschmack zum Aussteigen");
Konsole.ReadLine();
In den Warenkorb Id(String Prefix, Int Länge)
(STÖHNT)
const string chars =
„ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789“;
var random = new Random();
var random Chars = neue Char[Länge];
für (in i = 0; i < Länge; i++)
(STÖHNT)
randomChars[i] = chars[random.Next(chars.Length)];
}
zurück Präfix + neue Zeichenkette(randomChars);
}
}
Für MQTT 5:
mit System;
mit System. Sammlungen. Generisch;
Verwendung System.Security.Cryptography.X509Certificates;
mit System. Text:
mit System. Threading. Aufgaben;
mit MQTTnet;
mit MQTTnet.Client;
Klasse Programm
{\cHFFFF}
statischer Async Task Main(string[] args)
{\cHFFFF}
var Optionen = neue MqtClientOptionenBuilder()
. MitClientId(GenerateClientId("kristallmq_",10))
. MitTcpServer("public-mqtt-broker.bevywise.com", 1883)
//.WithWebSocketServer("ws://public-mqtt-broker.bevywise.com:10443/mqtt")
// .WithCredentials("username", "password") // Benutzername und Passwort hinzufügen
. MitProtocolVersion(MQTTnet.Formatter.MqttProtocolVersion.V500) //wenn Sie
mqtt-Version verwenden 5. Anmerkung: TLS aktivieren ist nicht Unterstützung Version 5
.Build();
// MQTT-Client erstellen
var factory = new MqttFactory();
var mqtClient = factory.CreateMqttClient();
// Client-Events ausschalten
mqtClient.ConnectedAsync += async e =>
{\cHFFFF}
Console.WriteLine('Connected erfolgreich mit MQTT Broker.");
// Ein Thema eintragen
warten mqtClient.SubscribeAsync(neu
MqttClientSubscribeOptionenBuilder(). MitTopicFilter(f =>
f.WithTopic("cmq/topic")).Build());
Console.WriteLine("Beschrieben zum Thema.");
// Mitteilung veröffentlichen
var message = new MqttApplicationMessageBuilder()
.WithTopic("cmq/topic")
.WithPayload("Hello CMQ")
. MitQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce)
.WithRetainFlag(true)
.Build();
warten mqtClient.PublishAsync(message);
Console.WriteLine("Message veröffentlicht.");
};
mqtClient.DisconnectedAsync += async e =>
{\cHFFFF}
Console.WriteLine("Disconnected from MQTT Broker.");
erwarten Task.Delay(TimeSpan.FromSeconds(5));
Versuch
{\cHFFFF}
warten mqtClient.ConnectAsync(Optionen);
}
Fangmenge
{\cHFFFF}
Console.WriteLine("Reconnecting fail.");
}
};
mqtClient.ApplicationMessageReceivedAsync += e =>
{\cHFFFF}
Console.WriteLine($"Received message:
{System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}");
zurück Task.Komplett Aufgabe
};
// Anschluss an den MQTT-Broker
warten mqtClient.ConnectAsync(Optionen);
// Halten Sie die Anwendung laufen
Console.WriteLine("Drucktaste zum Aussteigen");
Konsole.ReadLine();
Private statische String GenerateClientId(String Prefix, Int Länge)
{\cHFFFF}
const string chars =
„ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789“;
var random = new Random();
var random Chars = neue Char[Länge];
für (in i = 0; i < Länge; i++)
{\cHFFFF}
randomChars[i] = chars[random.Next(chars.Length)];
}
zurück Präfix + neue Zeichenkette(randomChars);
}
}
Hier ist, wie dieser C-Client mit gcc-Compiler zu einem ausführbaren kompiliert werden kann.
Verwendung von .Net SDK :
Um das Programm zu kompilieren und auszuführen, verwenden Sie den folgenden Befehl:
Das ist nicht möglich.
Dieser Befehl wird Ihre Anwendung erstellen und ausführen, und Sie sollten die Ausgabe in der Terminal.
Bauen Sie das Projekt (optional):
Wenn Sie das Projekt kompilieren möchten, ohne es auszuführen, verwenden Sie:
wohnzimmer
Die kompilierten Binaries befinden sich im Bin-Verzeichnis in Ihrem Projektordner.
Mit Visual Studio:
ANHANG Das Programm kompilieren und ausführen:
Verbinden Sie Ihren Kunden mit unserem hochmodernenDas ist mein Freund(CrystalMQ) oder einen Broker Ihrer Wahl. Diese leistungsstarke Kombination gewährleistet optimale Leistung und Zuverlässigkeit für alle Ihre Messaging-Anforderungen, den Weg für eine robuste und effiziente Systemintegration.