server支持自定义配置
This commit is contained in:
55
construct.go
55
construct.go
@ -11,6 +11,10 @@ import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/go-developer/gopkg/logger"
|
||||
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/go-developer/websocket/message"
|
||||
|
||||
"github.com/go-developer/websocket/config"
|
||||
@ -36,8 +40,10 @@ import (
|
||||
//
|
||||
// Date : 8:04 下午 2021/3/27
|
||||
type Server struct {
|
||||
ginRouter *gin.Engine
|
||||
wsServer *melody.Melody
|
||||
ginRouter *gin.Engine // GIN引擎
|
||||
wsServer *melody.Melody // websocket引擎
|
||||
conf *config.WSServerConfig // 配置
|
||||
loggerInstance *zap.Logger // 日志实例
|
||||
}
|
||||
|
||||
var (
|
||||
@ -69,10 +75,46 @@ func NewWebsocketServe(wsInstanceList ...abstract.IWebsocket) error {
|
||||
// 初始化ws server
|
||||
_ = lock.Lock()
|
||||
if _, exist := ginRouterTable[wsInstance.GetServerPort()]; !exist {
|
||||
ginRouterTable[wsInstance.GetServerPort()] = &Server{
|
||||
wsSetConfigList := wsInstance.GetWSServerConfig()
|
||||
if nil == wsSetConfigList {
|
||||
wsSetConfigList = make([]config.SetWSServerConfig, 0)
|
||||
}
|
||||
s := &Server{
|
||||
ginRouter: gin.Default(),
|
||||
wsServer: melody.New(),
|
||||
conf: config.NewWSServerConfig(wsSetConfigList...),
|
||||
}
|
||||
if s.conf.LogEnable {
|
||||
// 开启了日志,初始化日志
|
||||
if len(s.conf.LogPath) == 0 {
|
||||
panic(wsInstance.GetModuleFlag() + " 模块开启了日志记录,但是没有配置日志路径")
|
||||
}
|
||||
var (
|
||||
err error
|
||||
logConf *logger.RotateLogConfig
|
||||
)
|
||||
optionList := make([]logger.SetLoggerOptionFunc, 0)
|
||||
if s.conf.LogConsole {
|
||||
optionList = append(optionList, logger.WithConsoleOutput())
|
||||
}
|
||||
if s.conf.LogConsole {
|
||||
optionList = append(optionList, logger.WithConsoleOutput())
|
||||
}
|
||||
if logConf, err = logger.NewRotateLogConfig(s.conf.LogPath, s.conf.LogFile, logger.WithTimeIntervalType(s.conf.LogSplitInterval)); nil != err {
|
||||
panic(wsInstance.GetModuleFlag() + " 模块开启了日志记录,日志初始化失败, 失败原因 : " + err.Error())
|
||||
}
|
||||
if s.loggerInstance, err = logger.NewLogger(s.conf.LogLevel, logConf, optionList...); nil != err {
|
||||
panic(wsInstance.GetModuleFlag() + " 模块开启了日志记录,日志初始化失败, 失败原因 : " + err.Error())
|
||||
}
|
||||
}
|
||||
if nil == s.loggerInstance && s.conf.LogConsole {
|
||||
var err error
|
||||
// 没有配置文件日志, 但是配置了控制台输出
|
||||
if s.loggerInstance, err = logger.NewConsoleLogger(s.conf.LogLevel); nil != err {
|
||||
panic(wsInstance.GetModuleFlag() + " 模块开启了控制台日志记录,日志初始化失败, 失败原因 : " + err.Error())
|
||||
}
|
||||
}
|
||||
ginRouterTable[wsInstance.GetServerPort()] = s
|
||||
}
|
||||
if _, exist := commandTable[wsInstance.GetModuleFlag()]; !exist {
|
||||
commandTable[wsInstance.GetModuleFlag()] = make(map[string]abstract.ICommand)
|
||||
@ -133,6 +175,13 @@ func NewWebsocketServe(wsInstanceList ...abstract.IWebsocket) error {
|
||||
})
|
||||
// 注册指令
|
||||
for _, cmd := range wsInstance.GetCommandList() {
|
||||
if nil != ginRouterTable[wsInstance.GetServerPort()].loggerInstance {
|
||||
ginRouterTable[wsInstance.GetServerPort()].loggerInstance.Debug(
|
||||
"长连接指令注册成功",
|
||||
zap.String("module", wsInstance.GetModuleFlag()),
|
||||
zap.String("command", cmd.GetCommand()),
|
||||
)
|
||||
}
|
||||
commandTable[wsInstance.GetModuleFlag()][cmd.GetCommand()] = cmd
|
||||
}
|
||||
go func() {
|
||||
|
Reference in New Issue
Block a user