Heim  >  Artikel  >  Backend-Entwicklung  >  Golang implementiert mqtt

Golang implementiert mqtt

WBOY
WBOYOriginal
2023-05-19 09:06:372137Durchsuche

Mit der Entwicklung der IoT-Technologie hat das MQTT-Protokoll in den letzten Jahren nach und nach eine wichtige Position im Bereich der IoT-Kommunikation eingenommen. MQTT (Message Queuing Telemetry Transport) ist ein leichtes Kommunikationsprotokoll, das auf dem Publish/Subscribe-Modell (Pub/Sub) basiert. Das MQTT-Protokoll ist einfach, effizient, zuverlässig und flexibel und kann auf verschiedene Geräte wie Mobiltelefone, eingebettete Systeme und PCs angewendet werden, insbesondere im Bereich des Internets der Dinge. In diesem Artikel wird erläutert, wie das MQTT-Protokoll mithilfe der Go-Sprache implementiert wird.

  1. Einführung in das MQTT-Protokoll

Das MQTT-Protokoll ist ein Protokoll, das für Kommunikationsanforderungen in Umgebungen mit geringer Bandbreite, hoher Latenz und instabilen Netzwerken entwickelt wurde. MQTT führt die Idee eines Publish/Subscribe-Modells ein, d. h. die Nachrichtenzustellung zwischen dem Nachrichtenherausgeber (Publisher) und dem Nachrichtenabonnenten (Subscriber) ist nicht direkt verbunden, sondern wird über einen zwischengeschalteten Proxyserver (Broker) implementiert ).

Das Nachrichtenformat des MQTT-Protokolls ist wie folgt:

+————+————+————+————+————+————+———— +————+————+—— —+————+————+————+————+
|Fester Header|Variabler Header|Nachrichtentext|
+—— ——+————+————+————+ ————+————+————+————+————+————+—— ——+————+————+————+

Fester Header: enthält den Nachrichtentyp, QoS und andere Informationen.
Variabler Header: Enthält einige feste Informationen des sekundären Protokolls, wie z. B. Client-ID, Themenname usw.
Nachrichtentext: der spezifische veröffentlichte oder abonnierte Inhalt.

  1. Go-Sprache implementiert MQTT

Go-Sprache ist eine aufstrebende Programmiersprache, die für ihre hervorragende Parallelität und effiziente Leistung bekannt ist und sich in letzter Zeit zu einer der beliebtesten Sprachen im Bereich des Internets der Dinge entwickelt hat. Die Go-Sprache bietet einige hervorragende Netzwerkprogrammierbibliotheken wie TCP, UDP, HTTP usw. Sie können die hervorragenden Funktionen der Go-Sprache und dieser Bibliotheken nutzen, um das MQTT-Protokoll einfach zu implementieren.

2.1 Mqtt-Bibliothek installieren

Go-Sprache bietet mehrere Mqtt-Bibliotheken wie Paho MQTT, Eclipse Paho usw. In diesem Artikel wird die Eclipse Paho-Bibliothek verwendet, die über den folgenden Befehl installiert wird:

go get github.com/eclipse/paho.mqtt.golang

2.2 Verbindung zum MQTT-Server herstellen

Bevor Sie die Eclipse Paho-Bibliothek verwenden, müssen Sie eine Verbindung zum MQTT-Proxyserver herstellen. Beim Herstellen einer Verbindung müssen Sie die Adresse des MQTT-Proxyservers, die Client-ID, den Benutzernamen, das Passwort und andere Informationen angeben.

Die MQTT-Bibliothek stellt den ClientOptions-Typ bereit, und die Verbindungsoptionen werden über die SetXXX-Methode dieses Typs festgelegt, wie zum Beispiel:

opts := mqtt.NewClientOptions().AddBroker("tcp://localhost:1883").SetClientID("go-mqtt")
opts.SetUsername("user")
opts.SetPassword("password")
client := mqtt.NewClient(opts)

Im obigen Code legt die AddBroker-Methode die MQTT-Proxyserveradresse fest, die SetClientID-Methode legt die fest Client-ID und die Methoden SetUsername und SetPassword legen Verbindungsauthentifizierungsinformationen fest.

2.3 Nachrichten veröffentlichen

Im MQTT-Protokoll ist das veröffentlichende Ende der Nachricht der Client, der die Nachricht veröffentlicht. Beim Veröffentlichen der Nachricht müssen der Betreff und der Inhalt der Nachricht angegeben werden. Die Eclipse Paho-Bibliothek stellt die Publish-Methode zum Senden von Nachrichten bereit. Wie unten gezeigt:

token := client.Publish("topic", 0, false, "hello world")
token.Wait()

Im obigen Code ist der erste Parameter der client.Publish-Methode der Themenname, der zweite Parameter die QoS-Stufe und der dritte Parameter das Retain-Flag (true bedeutet, dass der Server speichert). die letzte entsprechende Themennachricht und sendet sie, wenn das Thema neu abonniert wird), der vierte Parameter ist der Nachrichtentext.

2.4 Abonnieren von Nachrichten

Im MQTT-Protokoll muss die Abonnentenseite der Nachricht das zu abonnierende Thema und eine Rückruffunktion angeben, um die Nachricht beim Eintreffen zu verarbeiten. Die Eclipse Paho-Bibliothek stellt die Subscribe-Methode zum Abonnieren von Nachrichten bereit. Wie unten gezeigt:

token := client.Subscribe("topic", 0, func(client mqtt.Client, msg mqtt.Message) {
    fmt.Printf("Received message: %s from topic: %s
", msg.Payload(), msg.Topic())
})
token.Wait()

Im obigen Code ist der erste Parameter der client.Subscribe-Methode der Themenname, der zweite Parameter die QoS-Stufe und der dritte Parameter die Rückruffunktion, die bei der Nachricht ausgeführt wird kommt.

  1. Zusammenfassung

Anhand des obigen Beispielcodes können wir sehen, dass es sehr einfach ist, das MQTT-Protokoll mithilfe der Go-Sprache und der Eclipse Paho-Bibliothek zu implementieren. Die Go-Sprache verfügt über eine gute Parallelitätsleistung und eine Netzwerkprogrammierungsbibliothek und kann problemlos verschiedene Netzwerkkommunikationsprotokolle implementieren. Als leichtes Kommunikationsprotokoll wird das MQTT-Protokoll häufig im Bereich des Internets der Dinge verwendet. Die Implementierung des MQTT-Protokolls über die Go-Sprache kann meiner Meinung nach eine effizientere, sicherere und zuverlässigere Kommunikationsmethode für Internet-of-Things-Anwendungen bieten Entwicklung des Internets der Dinge Zukünftig werden das MQTT-Protokoll und die Go-Sprache im Bereich des Internets der Dinge immer häufiger eingesetzt.

Das obige ist der detaillierte Inhalt vonGolang implementiert mqtt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:golang transfer nodejsNächster Artikel:golang transfer nodejs