添加MQTT客户端id生成(uuid后5位加1-3位随机数)
This commit is contained in:
parent
d08183f4dc
commit
5aafa48625
@ -1,9 +1,13 @@
|
||||
package mqtt
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"math/rand"
|
||||
"time"
|
||||
|
||||
mqtt "github.com/eclipse/paho.mqtt.golang"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
// MQTT客户端连接配置
|
||||
@ -25,11 +29,12 @@ func NewMqttOptions(address, username, password string) MqttOptions {
|
||||
}
|
||||
|
||||
var messagePubHandler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) {
|
||||
slog.Debug("MQTT收到消息", "topic", msg.Topic(), "msg", msg.Payload())
|
||||
slog.Debug("MQTT收到消息", "topic", msg.Topic(), "msg", string(msg.Payload()))
|
||||
}
|
||||
|
||||
var connectHandler mqtt.OnConnectHandler = func(client mqtt.Client) {
|
||||
slog.Info("MQTT连接成功")
|
||||
or := client.OptionsReader()
|
||||
slog.Info("MQTT连接成功", "ClientID", or.ClientID())
|
||||
// subs := make(map[string]byte)
|
||||
// subs["$SYS/brokers/+/clients/+/+"] = 0
|
||||
// client.SubscribeMultiple(subs, messagePubHandler)
|
||||
@ -40,11 +45,29 @@ var connectLostHandler mqtt.ConnectionLostHandler = func(client mqtt.Client, err
|
||||
}
|
||||
|
||||
var mqttClient mqtt.Client
|
||||
var clientId string
|
||||
|
||||
// 初始化MQTT客户端id
|
||||
func initClientId() {
|
||||
if clientId == "" {
|
||||
us := uuid.New().String()
|
||||
usl := len(us)
|
||||
sufix5 := us[usl-5 : usl]
|
||||
clientId = fmt.Sprintf("%s%d", sufix5, rand.New(rand.NewSource(time.Now().UnixNano())).Int()%1000)
|
||||
}
|
||||
}
|
||||
|
||||
// 获取MQTT客户端id
|
||||
func GetClientId() string {
|
||||
return clientId
|
||||
}
|
||||
|
||||
// 启动MQTT
|
||||
func Startup(options MqttOptions) {
|
||||
initClientId()
|
||||
opts := mqtt.NewClientOptions()
|
||||
opts.AddBroker(options.Broker)
|
||||
// opts.SetClientID("rtsts_service_3.7")
|
||||
opts.SetClientID(clientId)
|
||||
opts.SetUsername(options.Username)
|
||||
opts.SetPassword(options.Password)
|
||||
opts.SetDefaultPublishHandler(messagePubHandler)
|
||||
|
Loading…
Reference in New Issue
Block a user