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