安装依赖
go get github.com/eclipse/paho.mqtt.golang
定义连接信息
const (
ADDRESS = "tcp://127.0.0.1:1883"
USER_NAME = "admin"
PASSWORD = "public"
TOPIC = "test"
)
定义连接池
var (
MqttClient mqtt.Client
)
初始化
func initMqtt() {
opts := mqtt.NewClientOptions()
opts.AddBroker(ADDRESS)
opts.SetUsername(USER_NAME)
opts.SetPassword(PASSWORD)
MqttClient = mqtt.NewClient(opts)
if token := MqttClient.Connect(); token.Wait() && token.Error() != nil {
fmt.Println("订阅 MQTT 失败")
panic(token.Error())
}
}
定义QOS
const (
QoS0 = 0
QoS1 = 1
QoS2 = 2
)
发布
func publish(msg string) {
MqttClient.Publish(TOPIC, QoS2, true, msg)
}
订阅消息
func subscribe() {
MqttClient.Subscribe(TOPIC, QoS2, subCallBackFunc)
}
func subCallBackFunc(client mqtt.Client, msg mqtt.Message) {
fmt.Printf("订阅: 当前话题是 [%s]; 信息是 [%s] \n", msg.Topic(), string(msg.Payload()))
}