go mtqq 示例 unencrypted unauthenticated
package main
import (
"fmt"
"os"
"time"
mqtt "github.com/eclipse/paho.mqtt.golang"
)
var onConnect mqtt.OnConnectHandler = func(client mqtt.Client) {
Info.Printf("Client connected: %t\n", client.IsConnected())
// 订阅主题
if token := client.Subscribe("const.net.cn/#", 0, nil); token.Wait() && token.Error() != nil {
fmt.Println(token.Error())
os.Exit(1)
}
}
var onMessage mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) {
Info.Printf("Topic: %s\n", msg.Topic())
Info.Printf("Message: %s\n", msg.Payload())
}
var onDisconnect mqtt.ConnectionLostHandler = func(client mqtt.Client, err error) {
Info.Println("Client disconnected")
}
var onReconnect mqtt.ReconnectHandler = func(c mqtt.Client, co *mqtt.ClientOptions) {
Info.Println("Client Reconnect.")
}
func MQTT_1883_unencrypted_unauthenticated() {
opts := mqtt.NewClientOptions().AddBroker("tcp://test.mosquitto.org:1883").SetClientID("const.net.cn")
opts.SetKeepAlive(60 * time.Second)
// 设置消息回调处理函数
opts.SetDefaultPublishHandler(onMessage)
opts.SetCleanSession(true)
opts.SetAutoReconnect(true)
opts.SetProtocolVersion(4) //3.1.1
opts.SetOnConnectHandler(onConnect)
opts.SetConnectionLostHandler(onDisconnect)
opts.SetReconnectingHandler(onReconnect)
opts.SetPingTimeout(1 * time.Second)
c := mqtt.NewClient(opts)
if token := c.Connect(); token.Wait() && token.Error() != nil {
panic(token.Error())
}
time.Sleep(5 * time.Second)
// 发布消息
Info.Printf("MQTT Publish")
token := c.Publish("const.net.cn/1", 0, false, "Hello World")
token.Wait()
for {
Info.Printf("wait.")
time.Sleep(10 * time.Second)
}
}
运行结果:
INFO: 2021/09/06 15:05:08.897152 Client connected: true
INFO: 2021/09/06 15:05:13.899218 MQTT Publish
INFO: 2021/09/06 15:05:13.899298 wait.
INFO: 2021/09/06 15:05:15.040248 Topic: const.net.cn/1
INFO: 2021/09/06 15:05:15.040341 Message: Hello World
本文链接地址:https://const.net.cn/391.html