Files
mqtt/README.md
2019-10-20 18:43:56 +02:00

2.5 KiB

mqtt

CI Code Coverage GoDoc

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)
}