package mqtt import ( "server/edge/util/config" "sync" ) var _once sync.Once var _mgr *Mgr func GetMQTTMgr() *Mgr { _once.Do(func() { _mgr = _newMQTTMgr() }) return _mgr } type Mgr struct { Cloud *MClient } func _newMQTTMgr() *Mgr { cfg := config.Instance() return &Mgr{ Cloud: NewMqttClient(cfg.Mqtt.Server, cfg.Mqtt.Id, cfg.Mqtt.User, cfg.Mqtt.Password, 3000, &EmptyMqttOnline{}), } } func (o *Mgr) Subscribe(topic string, qos QOS, handler MessageHandler) { o.Cloud.Handle(topic, handler) err := o.Cloud.Subscribe(topic, qos) if err != nil { return } } func (o *Mgr) UnSubscribe(topic string) { err := o.Cloud.Unsubscribe(topic) if err != nil { return } } func (o *Mgr) Publish(topic string, payload interface{}, qos QOS) error { return o.Cloud.Publish(topic, payload, qos) }