【笔记】Go语言实现MQTT

前言

Go语言实现MQTT

下载依赖

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

创建连接

127.0.0.1:指定MQTT服务器IP地址
1883:指定MQTT服务器端口号

1
2
3
4
5
6
var options = mqtt.NewClientOptions()
options.AddBroker(fmt.Sprintf("tcp://127.0.0.1:1883"))
var client = mqtt.NewClient(options)
if token := client.Connect(); token.Wait() && token.Error() != nil {
log.Panicln(token.Error())
}

指定用户名密码

<username>:用户名
<password>:密码

1
2
options.SetUsername("<username>")
options.SetPassword("<passwordd>")

指定连接ID

1
options.SetClientID("go-mqtt-client")

配置过滤器

1
2
3
options.SetDefaultPublishHandler(func(client mqtt.Client, message mqtt.Message) {
fmt.Println(message.Payload(), message.Topic())
})

连接建立完成事件

1
2
3
options.OnConnect = func(client mqtt.Client) {
fmt.Println("Connected")
}

连接断开事件

1
2
3
options.OnConnectionLost = func(client mqtt.Client, err error) {
fmt.Printf("Connect Lost: %v", err)
}

订阅者

topic/test:订阅的主题

1
2
var token = client.Subscribe("topic/test", 1, nil)
token.Wait()

发布者

topic/test:发布的主题
<str>:发布的信息内容

1
2
var token = client.Publish("topic/test", 0, false, string("<str>"))
token.Wait()

完成

参考文献

哔哩哔哩——谷雨课堂