scene
This commit is contained in:
75
Server/scene/app/app.go
Normal file
75
Server/scene/app/app.go
Normal file
@@ -0,0 +1,75 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"common/db/etcd"
|
||||
"common/discover"
|
||||
"common/log"
|
||||
"common/net/grpc/service"
|
||||
"common/net/socket/websocket"
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/judwhite/go-svc"
|
||||
"runtime/debug"
|
||||
"scene/config"
|
||||
"scene/grpc_server"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type Program struct {
|
||||
wg *sync.WaitGroup
|
||||
server service.IService // grpc服务
|
||||
webServer *gin.Engine // web服务
|
||||
wsServer *websocket.WSServer // websocket服务
|
||||
stop chan bool
|
||||
}
|
||||
|
||||
func (p *Program) Init(_ svc.Environment) error {
|
||||
if cfg, err := p.initBase(); err != nil {
|
||||
return err
|
||||
} else {
|
||||
log.Infof(fmt.Sprintf("%v starting...", cfg.App.Name))
|
||||
if err := p.initDB(cfg); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Program) Start() error {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
fmt.Printf("Start err: %v", err)
|
||||
debug.PrintStack()
|
||||
_ = p.Stop()
|
||||
}
|
||||
}()
|
||||
|
||||
discover.Listen()
|
||||
p.server = grpc_server.NewServer(config.Get().Serve.Grpc.TTL)
|
||||
p.server.Init(config.Get().Serve.Grpc.Address, config.Get().Serve.Grpc.Port)
|
||||
go func() {
|
||||
cfg := config.Get()
|
||||
_ = p.wsServer.Run(
|
||||
log.GetLogger().Named("gnet"),
|
||||
fmt.Sprintf("tcp4://0.0.0.0:%v", cfg.Serve.Socket.Web.Port),
|
||||
true, true, false, false, true, 8,
|
||||
)
|
||||
}()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Program) Stop() error {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
fmt.Printf("Stop err: %v", err)
|
||||
debug.PrintStack()
|
||||
}
|
||||
}()
|
||||
|
||||
discover.Close()
|
||||
p.server.Close()
|
||||
_ = etcd.Close()
|
||||
|
||||
return nil
|
||||
}
|
||||
22
Server/scene/app/base.go
Normal file
22
Server/scene/app/base.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"common/log"
|
||||
"common/utils"
|
||||
"math/rand"
|
||||
"scene/config"
|
||||
)
|
||||
|
||||
func (p *Program) initBase() (*config.Config, error) {
|
||||
// 配置
|
||||
cfg, err := config.LoadConfig("./config")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// 日志
|
||||
log.Init(cfg.Log.Debug, cfg.Log.MaxSize, cfg.Log.MaxBackups, cfg.Log.MaxAge, cfg.Log.Level)
|
||||
// 雪花
|
||||
utils.InitSnowflake(int64(rand.Intn(1000)))
|
||||
|
||||
return cfg, nil
|
||||
}
|
||||
20
Server/scene/app/db.go
Normal file
20
Server/scene/app/db.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"common/db/etcd"
|
||||
"scene/config"
|
||||
)
|
||||
|
||||
func (p *Program) initDB(cfg *config.Config) error {
|
||||
// ETCD
|
||||
if err := etcd.Init(cfg.DB.Etcd.Address); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Program) stopDB() error {
|
||||
_ = etcd.Close()
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user