package mqttclient import ( "errors" mqtt "github.com/eclipse/paho.mqtt.golang" "log" "sync" ) var CONFIG = MqttConnectConfig{ Broker: "tcp://1.15.92.205:1883", User: "admin", Password: "houyaf1!", Certificate: "", PrivateKey: "", ClientId: "clientID", WillEnabled: false, WillTopic: "", WillPayload: "", WillQos: 0, Qos: 0, Retained: false, OnConnect: nil, OnConnectionLost: nil, } var ErrMqttInit = errors.New("MQTT初始化失败") var ( once sync.Once mqttClient *MqttClient ) func Instance() *MqttClient { once.Do(func() { mqttClient = NewMqttClient(CONFIG) }) return mqttClient } func init() { if Instance() == nil { log.Fatal(ErrMqttInit) } } func Publish(topic string, payload []byte) error { return Instance().Publish(topic, payload) } func Subscribe(topics []string, onMessage mqtt.MessageHandler) error { return Instance().Subscribe(topics, onMessage) } func Unsubscribe(topics ...string) error { return Instance().Unsubscribe(topics...) }