mqttmgr.go 799 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package mqtt
  2. import (
  3. "server/global"
  4. "sync"
  5. )
  6. var _once sync.Once
  7. var _mgr *Mgr
  8. func GetMQTTMgr() *Mgr {
  9. _once.Do(func() {
  10. _mgr = _newMQTTMgr()
  11. })
  12. return _mgr
  13. }
  14. type Mgr struct {
  15. Cloud *MClient
  16. }
  17. func _newMQTTMgr() *Mgr {
  18. cfg := global.GVA_CONFIG.Mqtt
  19. return &Mgr{
  20. Cloud: NewMqttClient(cfg.Server,
  21. cfg.Id,
  22. cfg.User,
  23. cfg.Password,
  24. 3000, &EmptyMqttOnline{}),
  25. }
  26. }
  27. func (o *Mgr) Subscribe(topic string, qos QOS, handler MessageHandler) {
  28. o.Cloud.Handle(topic, handler)
  29. err := o.Cloud.Subscribe(topic, qos)
  30. if err != nil {
  31. return
  32. }
  33. }
  34. func (o *Mgr) UnSubscribe(topic string) {
  35. err := o.Cloud.Unsubscribe(topic)
  36. if err != nil {
  37. return
  38. }
  39. }
  40. func (o *Mgr) Publish(topic string, payload interface{}, qos QOS) error {
  41. return o.Cloud.Publish(topic, payload, qos)
  42. }