mqtt_cmd.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package mqttclient
  2. import (
  3. "errors"
  4. mqtt "github.com/eclipse/paho.mqtt.golang"
  5. "log"
  6. "sync"
  7. )
  8. var CONFIG = MqttConnectConfig{
  9. Broker: "tcp://1.15.92.205:1883",
  10. User: "admin",
  11. Password: "houyaf1!",
  12. Certificate: "",
  13. PrivateKey: "",
  14. ClientId: "clientID",
  15. WillEnabled: false,
  16. WillTopic: "",
  17. WillPayload: "",
  18. WillQos: 0,
  19. Qos: 0,
  20. Retained: false,
  21. OnConnect: nil,
  22. OnConnectionLost: nil,
  23. }
  24. var ErrMqttInit = errors.New("MQTT初始化失败")
  25. var (
  26. once sync.Once
  27. mqttClient *MqttClient
  28. )
  29. func Instance() *MqttClient {
  30. once.Do(func() {
  31. mqttClient = NewMqttClient(CONFIG)
  32. })
  33. return mqttClient
  34. }
  35. func init() {
  36. if Instance() == nil {
  37. log.Fatal(ErrMqttInit)
  38. }
  39. }
  40. func Publish(topic string, payload []byte) error {
  41. return Instance().Publish(topic, payload)
  42. }
  43. func Subscribe(topics []string, onMessage mqtt.MessageHandler) error {
  44. return Instance().Subscribe(topics, onMessage)
  45. }
  46. func Unsubscribe(topics ...string) error {
  47. return Instance().Unsubscribe(topics...)
  48. }