MQTT-Wrapper package provides easy-to-use MQTTv3 and MQTTv5 connection for Go projects.
It supports Request/Response pattern for MQTTv5 connection.
- Import the package
import( mqtt "github.com/alihanyalcin/mqtt-wrapper" )- Create a local variable using MQTTConfig struct and fill the necessary fields for the connection.
config := mqtt.Config{ Brokers: []string{"127.0.0.1:1883"}, ClientID: "", Username: "", Password: "", Topics: []string{"topic"}, QoS: 0, Retained: false, AutoReconnect: false, MaxReconnectInterval: 5, PersistentSession: false, KeepAlive: 15, TLSCA: "", TLSCert: "", TLSKey: "", Version: mqtt.V3, // use mqtt.V5 for MQTTv5 client. }- Then, create a connection to MQTT broker(s).
client, err := config.CreateConnection() if err != nil { log.Fatal(err) }- To disconnect from broker(s)
client.Disconnect()- To publish a message to broker(s) with a specific topic
err = client.Publish("topic", "message") if err != nil { log.Fatal(err) }- To handle new messages
client.Handle(func(topic string, payload []byte) { log.Printf("Received on [%s]: '%s'", topic, string(payload)) })Check examples for more information about MQTTv5 client.