2 Star 1 Fork 0

法马智慧 / fmgo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
options.go 1.74 KB
一键复制 编辑 原始数据 按行查看 历史
package emqx
import (
"gitee.com/fmpt/fmgo/emqx/logger"
"github.com/eclipse/paho.mqtt.golang"
"time"
)
type ConnectHandler func(mqtt.Client)
type ConnectLostHandler func(mqtt.Client, error)
// Options 默认配置 本组件放弃维护,建议使用emq5工具包
// Deprecated
type Options struct {
Addr string
ID string
Username string
Password string
KeepAlive time.Duration
SetPingTimeout time.Duration
Engine []*Engine
ConnectHandler ConnectHandler
ConnectLostHandler ConnectLostHandler
Logger logger.Interface
}
func Default(addr, id, username, password string) *Options {
mq := &Options{
Addr: addr,
ID: id,
Username: username,
Password: password,
KeepAlive: 60 * time.Second,
SetPingTimeout: 1 * time.Second,
}
mq.ConnectHandler = mq.connectHandler
mq.ConnectLostHandler = mq.connectLostHandler
return mq
}
//func (o *Options) Register(engine ...*Engine) {
// o.Engine = append(o.Engine, engine...)
//}
// 连接的回调函数
func (o *Options) connectHandler(client mqtt.Client) {
if len(o.Engine) == 0 {
return
}
for _, e := range o.Engine {
eng := e
realTopic := eng.Topic
if eng.Wildcard {
realTopic += "/#"
}
if eng.Shared {
//realTopic = "$share/" + strconv.FormatInt(time.Now().Unix(), 10) + "/"
realTopic = "$share/" + eng.ShareGroup + "/" + realTopic
}
if token := client.Subscribe(realTopic, 2, eng.distribute); token.Wait() && token.Error() != nil {
o.Logger.Error(token.Error())
}
}
}
// 丢失连接的回掉函数
func (o *Options) connectLostHandler(client mqtt.Client, err error) {
o.Logger.Error("mqtt Connect loss: ", err.Error(), " reconnecting...")
}
Go
1
https://gitee.com/fmpt/fmgo.git
git@gitee.com:fmpt/fmgo.git
fmpt
fmgo
fmgo
v1.7.7

搜索帮助