mqttmgr.go 913 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package main
  2. import (
  3. "sync"
  4. "lc/common/mqtt"
  5. )
  6. var _mqttMgrOnce sync.Once
  7. var _mqttMgrSingle *MQTTMgr
  8. func GetMQTTMgr() *MQTTMgr {
  9. _mqttMgrOnce.Do(func() {
  10. _mqttMgrSingle = _newMQTTMgr()
  11. })
  12. return _mqttMgrSingle
  13. }
  14. type MQTTMgr struct {
  15. Cloud *MqttClient
  16. }
  17. func _newMQTTMgr() *MQTTMgr {
  18. return &MQTTMgr{
  19. Cloud: NewMqttClient(MQTTConfig.Mqtt_Server,
  20. MQTTConfig.Mqtt_Id,
  21. MQTTConfig.Mqtt_User,
  22. MQTTConfig.Mqtt_Password,
  23. 3000, &EmptyMqttOnline{}),
  24. }
  25. }
  26. func (o *MQTTMgr) Subscribe(topic string, qos mqtt.QOS, handler mqtt.MessageHandler) {
  27. o.Cloud.Handle(topic, handler)
  28. err := o.Cloud.Subscribe(topic, qos)
  29. if err != nil {
  30. return
  31. }
  32. }
  33. func (o *MQTTMgr) UnSubscribe(topic string) {
  34. err := o.Cloud.Unsubscribe(topic)
  35. if err != nil {
  36. return
  37. }
  38. }
  39. func (o *MQTTMgr) Publish(topic string, payload string, qos mqtt.QOS) error {
  40. return o.Cloud.PublishString(topic, payload, qos)
  41. }