From eac932eb827c93e2e998ac1210c3f5e548af0dbf Mon Sep 17 00:00:00 2001 From: qixiaoning <jony.kee@outlook.com> Date: 星期四, 28 八月 2025 09:10:14 +0800 Subject: [PATCH] 推送回显地址bug,实时监控接口摄像机名称直接取video_point_name, --- push-service/mqtt/mqtt.go | 87 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 87 insertions(+), 0 deletions(-) diff --git a/push-service/mqtt/mqtt.go b/push-service/mqtt/mqtt.go new file mode 100644 index 0000000..6341672 --- /dev/null +++ b/push-service/mqtt/mqtt.go @@ -0,0 +1,87 @@ +package mqtt + +import ( + "fmt" + + MQTT "github.com/eclipse/paho.mqtt.golang" +) + +type MQTTClient struct { + Broker string + ClientId string + Username string + Passwd string + Mqtt MQTT.Client +} + +var Client *MQTTClient + +func init() { + Client = &MQTTClient{} +} + +type mqLog struct { + +} + +func (l *mqLog) Println(v ...interface{}) { + fmt.Println(v...) +} + +func (l *mqLog) Printf(format string, v ...interface{}) { + fmt.Println(fmt.Sprintf(format, v...)) +} + +func (m *MQTTClient) Init(brokerAddr, clientId, username, password string) { + m.Broker = brokerAddr + m.ClientId = clientId + m.Username = username + m.Passwd = password + + opts := MQTT.NewClientOptions().AddBroker(brokerAddr) + opts.SetClientID(clientId) + opts.SetUsername(username) + opts.SetPassword(password) + + opts.SetAutoReconnect(false) + hl := mqLog{} + MQTT.ERROR = &hl + MQTT.CRITICAL= &hl + MQTT.WARN = &hl + MQTT.DEBUG = &hl + + m.Mqtt = MQTT.NewClient(opts) + +fmt.Println("connectRetry:", opts.ConnectRetry) + if token := m.Mqtt.Connect(); token.Wait() && token.Error() != nil { + panic(token.Error()) + // fmt.Println(token.Error()) + } +} + +func (m *MQTTClient) Subscribe(topic string, sub chan<- MQTT.Message) { + fmt.Println("start subscribing...") + subToken := m.Mqtt.Subscribe( + topic, + 0, + func(client MQTT.Client, msg MQTT.Message) { + sub <- msg + }) + if subToken.Wait() && subToken.Error() != nil { + fmt.Println(subToken.Error()) + } +} + +func (m *MQTTClient) Publish(topic string, msg interface{}) { + if m.Mqtt.IsConnected() { + token := m.Mqtt.Publish(topic, 0, false, msg) + if token.Wait() && token.Error() != nil { + fmt.Println(token.Error()) + } + } else { + fmt.Println("mqtt client reconneted") + if token := m.Mqtt.Connect(); token.Wait() && token.Error() != nil { + fmt.Println(token.Error()) + } + } +} -- Gitblit v1.8.0