feat 机器人
This commit is contained in:
54
Server/robot/app/app.go
Normal file
54
Server/robot/app/app.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"common/log"
|
||||
"fmt"
|
||||
"github.com/judwhite/go-svc"
|
||||
"robot/config"
|
||||
)
|
||||
|
||||
type Program struct {
|
||||
moduleList []Module // 模块列表
|
||||
}
|
||||
|
||||
type Module interface {
|
||||
Init() error
|
||||
Start() error
|
||||
Stop() error
|
||||
}
|
||||
|
||||
func (p *Program) Init(_ svc.Environment) error {
|
||||
p.moduleList = append(p.moduleList, &ModuleBase{})
|
||||
p.moduleList = append(p.moduleList, &ModuleWebsocket{})
|
||||
|
||||
for _, module := range p.moduleList {
|
||||
if err := module.Init(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
log.Infof(fmt.Sprintf("%v Init successful...", config.Get().App.Name))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Program) Start() error {
|
||||
for _, module := range p.moduleList {
|
||||
if err := module.Start(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
log.Infof(fmt.Sprintf("%v Start successful...", config.Get().App.Name))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Program) Stop() error {
|
||||
for i := len(p.moduleList) - 1; i >= 0; i-- {
|
||||
module := p.moduleList[i]
|
||||
if err := module.Stop(); err != nil {
|
||||
log.Errorf("module stop error: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
log.Infof(fmt.Sprintf("%v Stop successful...", config.Get().App.Name))
|
||||
return nil
|
||||
}
|
||||
33
Server/robot/app/base.go
Normal file
33
Server/robot/app/base.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"common/log"
|
||||
"common/utils"
|
||||
"math/rand"
|
||||
"robot/config"
|
||||
)
|
||||
|
||||
// ModuleBase 基础模块,或者一些零散的模块
|
||||
type ModuleBase struct {
|
||||
}
|
||||
|
||||
func (p *ModuleBase) Init() error {
|
||||
// 配置
|
||||
if err := config.LoadConfig(); err != nil {
|
||||
return err
|
||||
}
|
||||
cfg := config.Get()
|
||||
// 日志
|
||||
log.Init(cfg.Log.Debug, cfg.Log.MaxSize, cfg.Log.MaxBackups, cfg.Log.MaxAge, cfg.Log.Level)
|
||||
// 雪花
|
||||
utils.InitSnowflake(int64(rand.Intn(1000)))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *ModuleBase) Start() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *ModuleBase) Stop() error {
|
||||
return nil
|
||||
}
|
||||
29
Server/robot/app/websocket.go
Normal file
29
Server/robot/app/websocket.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"robot/config"
|
||||
"robot/ws"
|
||||
)
|
||||
|
||||
// ModuleWebsocket Websocket客户端模块
|
||||
type ModuleWebsocket struct {
|
||||
manager *ws.Manager
|
||||
}
|
||||
|
||||
func (p *ModuleWebsocket) Init() error {
|
||||
cfg := config.Get().Client
|
||||
p.manager = ws.NewManager(
|
||||
fmt.Sprintf("%s:%d", cfg.Websocket.Address, cfg.Websocket.Port),
|
||||
)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *ModuleWebsocket) Start() error {
|
||||
p.manager.Start()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *ModuleWebsocket) Stop() error {
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user