2 Star 1 Fork 0

法马智慧/fmgo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
emq.go 1.36 KB
一键复制 编辑 原始数据 按行查看 历史
package emqx
import (
mqtt "github.com/eclipse/paho.mqtt.golang"
"time"
)
var mq *MQTT
type PublishHook func()
type MQTT struct {
*Options
client mqtt.Client
publishHook PublishHook
}
func GetConnect() *MQTT {
return mq
}
func InitClient(opt *Options) *MQTT {
opts := mqtt.NewClientOptions().AddBroker("tcp://" + opt.Addr).SetClientID(opt.ID)
opts.SetAutoReconnect(true)
opts.SetConnectRetryInterval(time.Second * 5)
opts.SetUsername(opt.Username)
opts.SetPassword(opt.Password)
opts.SetKeepAlive(60 * time.Second)
opts.SetPingTimeout(1 * time.Second)
opts.OnConnect = mqtt.OnConnectHandler(opt.ConnectHandler)
opts.OnConnectionLost = mqtt.ConnectionLostHandler(opt.ConnectLostHandler)
mq = &MQTT{
Options: opt,
client: mqtt.NewClient(opts),
}
return mq
}
func (m *MQTT) Connect() error {
if token := m.client.Connect(); token.Wait() && token.Error() != nil {
m.Logger.Error(token.Error())
}
return nil
}
func (m *MQTT) Publish(topic string, data []byte) error {
if token := m.client.Publish(topic, 1, false, data); token != nil {
return token.Error()
}
return nil
}
// PublishShare 发布共享消息
func (m *MQTT) PublishShare(topic string, data []byte, group string) error {
if group == "" {
group = "default"
}
if token := m.client.Publish("$share/"+group+"/"+topic, 1, false, data); token != nil {
return token.Error()
}
return nil
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/fmpt/fmgo.git
git@gitee.com:fmpt/fmgo.git
fmpt
fmgo
fmgo
v1.6.1

搜索帮助

A270a887 8829481 3d7a4017 8829481