使用HMQ建立了一个MQTT服务器,然后建立一个客户端,看看推送和获取。
package main
import (
"fmt"
"log"
"os"
"os/signal"
"time"
MQTT "github.com/eclipse/paho.mqtt.golang"
)
var (
server = "scwy.net"
port = "1884"
uid = "Ease"
topic = "Ease001"
)
func main() {
// 创建 MQTT 客户端配置
opts := MQTT.NewClientOptions()
opts.AddBroker(fmt.Sprintf("tcp://%s:%s", server, port))
opts.SetClientID(uid)
// 创建 MQTT 客户端实例
client := MQTT.NewClient(opts)
// 连接到 MQTT 服务器
if token := client.Connect(); token.Wait() && token.Error() != nil {
log.Fatal(token.Error())
}
// 在连接成功后进行订阅和发布操作
go func() {
// 订阅主题
if token := client.Subscribe(topic, 0, func(c MQTT.Client, m MQTT.Message) {
fmt.Printf("主题 %s 反馈信息: %s \n", m.Topic(), m.Payload())
}); token.Wait() && token.Error() != nil {
log.Fatal(token.Error())
}
// 发布消息
for i := 0; i < 3; i++ {
text := fmt.Sprintf("信息%d", i)
token := client.Publish(topic, 0, false, text)
token.Wait()
fmt.Println("发布:", text)
time.Sleep(time.Second)
}
}()
// 等待退出信号
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
<-c
// 断开与 MQTT 服务器的连接
client.Disconnect(250)
}