# MQTT **Repository Path**: xiaochengtech/mqtt ## Basic Information - **Project Name**: MQTT - **Description**: MQTT封装库,自动订阅,事件分发。 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 90 - **Forks**: 22 - **Created**: 2019-09-10 - **Last Updated**: 2025-06-16 ## Categories & Tags **Categories**: web-dev-toolkits, message-server **Tags**: None ## README # mqtt 管理MQTT的连接,以及消息的订阅。 ### 使用 首先生成配置: ```go import "gitee.com/xiaochengtech/mqtt" conf := mqtt.Config{ Broker: "tcp://127.0.0.1:1883", ClientID: "client001", } ``` 然后生成一个全局的实例,注册需要订阅的消息,连接后会自动订阅: ```go import ( "gitee.com/xiaochengtech/mqtt" gomqtt "github.com/eclipse/paho.mqtt.golang" ) var instance = mqtt.Client{} func init() { instance.Subscribe(mqtt.SubscribeType{ // 消息订阅 Topic: "topic/test", Qos: byte(0), Callback: TestMessageHandler, RetryTimes: 0, }) } // TestMessageHandler函数定义格式如下 func TestMessageHandler(client gomqtt.Client, message gomqtt.Message) { // ... } ``` 其中`RetryTimes`表示订阅失败后的重试次数,如果为0,则表示一直重试下去。 最后使用初始化方法连接到MQTT的Broker上: ```go opts := mqtt.GetClientOptions(&conf) opts.Username = "username" opts.Password = "password" opts.SetWill(topic, "client_dead", 0, true) opts.SetKeepAlive(10 * time.Second) opts.SetPingTimeout(5 * time.Second) // ... opts.SetOnConnectHandler(...) // 设置自定义的连接后处理方法 opts.SetConnectionLostHandler(...) // 设置自定义的断开连接后处理方法 if err := instance.Init(opts); err != nil { log.Fatal("初始化失败") } else { log.Println("初始化成功") } ```