Maison > développement back-end > Golang > golang implémente mqtt

golang implémente mqtt

WBOY
Libérer: 2023-05-19 09:06:37
original
2210 Les gens l'ont consulté

Ces dernières années, avec le développement de la technologie IoT, le protocole MQTT a progressivement occupé une place importante dans le domaine de la communication IoT. MQTT (Message Queuing Telemetry Transport) est un protocole de communication léger basé sur le modèle de publication/abonnement (pub/sub). Le protocole MQTT est simple, efficace, fiable et flexible, et peut être appliqué à divers appareils tels que les téléphones mobiles, les systèmes embarqués et les PC, notamment dans le domaine de l'Internet des objets. Cet article explique comment implémenter le protocole MQTT à l'aide du langage Go.

  1. Introduction au protocole MQTT

Le protocole MQTT est un protocole conçu pour les besoins de communication dans des environnements réseau à faible bande passante, à latence élevée et instables. MQTT introduit l'idée d'un modèle de publication/abonnement, c'est-à-dire que la livraison du message entre l'éditeur du message (éditeur) et l'abonné au message (abonné) n'est pas directement connectée, mais est mise en œuvre via un serveur proxy intermédiaire (courtier). ).

Le format des messages du protocole MQTT est le suivant :

+————+————+————+————+————+————+———— +————+————+—— —+————+————+————+————+
|En-tête fixe|En-tête variable|Corps du message|
+—— ——+————+————+————+ ————+————+————+————+————+————+—— ——+————+————+————+

En-tête fixe : contient le type de message, la QoS et d'autres informations.
En-tête variable : contient des informations fixes du protocole secondaire, telles que l'ID client, le nom du sujet, etc.
Corps du message : le contenu spécifique publié ou souscrit.

  1. Le langage Go implémente MQTT

Le langage Go est un langage de programmation émergent, connu pour son excellente concurrence et ses performances efficaces, et est récemment devenu l'un des langages populaires dans le domaine de l'Internet des objets. Le langage Go fournit d'excellentes bibliothèques de programmation réseau, telles que TCP, UDP, HTTP, etc. Vous pouvez utiliser les excellentes fonctionnalités du langage Go et ces bibliothèques pour implémenter facilement le protocole MQTT.

2.1 Installer la bibliothèque mqtt

Le langage Go fournit plusieurs bibliothèques mqtt, telles que Paho MQTT, Eclipse Paho, etc. Cet article utilisera la bibliothèque Eclipse Paho, qui s'installe via la commande suivante :

go get github.com/eclipse/paho.mqtt.golang
Copier après la connexion

2.2 Connexion au serveur MQTT

Avant d'utiliser la bibliothèque Eclipse Paho, vous devez vous connecter au serveur proxy MQTT. Lors de la connexion, vous devez fournir l'adresse du serveur proxy MQTT, l'ID client, le nom d'utilisateur, le mot de passe et d'autres informations.

La bibliothèque MQTT fournit le type ClientOptions, et les options de connexion sont définies via la méthode SetXXX de ce type, telle que :

opts := mqtt.NewClientOptions().AddBroker("tcp://localhost:1883").SetClientID("go-mqtt")
opts.SetUsername("user")
opts.SetPassword("password")
client := mqtt.NewClient(opts)
Copier après la connexion

Dans le code ci-dessus, la méthode AddBroker définit l'adresse du serveur proxy MQTT, la méthode SetClientID définit le l'ID client et les méthodes SetUsername et SetPassword définissent les informations d'authentification de connexion.

2.3 Publication de messages

Dans le protocole MQTT, l'extrémité de publication du message est le client qui publie le message. Lors de la publication du message, le sujet et le contenu du message doivent être fournis. La bibliothèque Eclipse Paho fournit la méthode Publish pour envoyer des messages. Comme indiqué ci-dessous :

token := client.Publish("topic", 0, false, "hello world")
token.Wait()
Copier après la connexion

Dans le code ci-dessus, le premier paramètre de la méthode client.Publish est le nom du sujet, le deuxième paramètre est le niveau de QoS et le troisième paramètre est l'indicateur Retain (vrai signifie que le serveur enregistrera le dernier message du sujet correspondant et l'envoyer lorsque le sujet est nouvellement abonné), le quatrième paramètre est le corps du message.

2.4 Abonnement aux messages

Dans le protocole MQTT, le côté abonné du message doit fournir le sujet auquel s'abonner et une fonction de rappel pour traiter le message lorsqu'il arrive. La bibliothèque Eclipse Paho fournit la méthode Subscribe pour s'abonner aux messages. Comme indiqué ci-dessous :

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()
Copier après la connexion

Dans le code ci-dessus, le premier paramètre de la méthode client.Subscribe est le nom du sujet, le deuxième paramètre est le niveau de QoS et le troisième paramètre est la fonction de rappel, qui sera exécutée lorsque le message arrive.

  1. Résumé

Grâce à l'exemple de code ci-dessus, nous pouvons voir qu'il est très simple d'implémenter le protocole MQTT en utilisant le langage Go et la bibliothèque Eclipse Paho. Le langage Go a de bonnes performances de concurrence et une bibliothèque de programmation réseau, et peut facilement implémenter divers protocoles de communication réseau. En tant que protocole de communication léger, le protocole MQTT est largement utilisé dans le domaine de l'Internet des objets. La mise en œuvre du protocole MQTT via le langage Go peut fournir une méthode de communication plus efficace, plus sécurisée et plus fiable pour les applications de l'Internet des objets. le développement de l'Internet des objets À l'avenir, le protocole MQTT et le langage Go seront de plus en plus utilisés dans le domaine de l'Internet des objets.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal