mirror of
https://github.com/lucacasonato/mqtt.git
synced 2025-09-26 19:01:12 +08:00
04d706e82b3653acfdae6e51d8c3bfc7e5630aff
mqtt
An mqtt client for Go that improves usability over the paho.mqtt.golang library it wraps. Made for 🤖.
installation
go get github.com/lucacasonato/mqtt
import "github.com/lucacasonato/mqtt"
// or
import (
"github.com/lucacasonato/mqtt"
)
usage
creating a client & connecting
client, err := mqtt.NewClient(mqtt.ClientOptions{
// required
Servers: []string{
"tcp://test.mosquitto.org:1883",
},
// optional
ClientID: "my-mqtt-client",
Username: "admin",
Password: "***",
AutoReconnect: true,
})
if err != nil {
panic(err)
}
err = client.Connect(context.WithTimeout(2 * time.Second))
if err != nil {
panic(err)
}
disconnecting from a client
client.Disconnect()
publishing a message
bytes
err := client.Publish(context.WithTimeout(1 * time.Second), "api/v0/main/client1", []byte(0, 1 ,2, 3), mqtt.AtLeastOnce)
if err != nil {
panic(err)
}
string
err := client.PublishString(context.WithTimeout(1 * time.Second), "api/v0/main/client1", "hello world", mqtt.AtLeastOnce)
if err != nil {
panic(err)
}
json
err := client.Publish(context.WithTimeout(1 * time.Second), "api/v0/main/client1", []string("hello", "world"), mqtt.AtLeastOnce)
if err != nil {
panic(err)
}
subscribing
err := client.Subscribe(context.WithTimeout(1 * time.Second), func(message mqtt.Message) {
fmt.Printf("recieved a message with content %v\n", message.PayloadString())
}, "api/v0/main/client1", mqtt.AtLeastOnce)
if err != nil {
panic(err)
}
subscribing without listening
err := client.Subscribe(context.WithTimeout(1 * time.Second), nil, "api/v0/main/client1", mqtt.AtLeastOnce)
if err != nil {
panic(err)
}
listening without subscribing
err := client.Listen(func(message mqtt.Message) {
v := interface{}{}
err := message.PayloadJSON(&v)
if err != nil {
panic(err)
}
fmt.Printf("recieved a message with content %v\n", v)
}, "api/v0/main/client1")
if err != nil {
panic(err)
}
Languages
Go
99.4%
Makefile
0.6%