From c23dd400ef8e1294d39f3f4ba495f461dac6edd0 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Mon, 24 Apr 2023 14:56:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/props.go | 10 ++++++++++ server/server.go | 30 +++++++++++++++++++++--------- 2 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 server/props.go diff --git a/server/props.go b/server/props.go new file mode 100644 index 0000000..389bd6c --- /dev/null +++ b/server/props.go @@ -0,0 +1,10 @@ +package server + +type Option func(srv *Server) + +// WithProd 通过生产模式运行服务器 +func WithProd() Option { + return func(srv *Server) { + srv.prod = true + } +} diff --git a/server/server.go b/server/server.go index c673533..2c87fed 100644 --- a/server/server.go +++ b/server/server.go @@ -19,7 +19,7 @@ import ( ) // New 根据特定网络类型创建一个服务器 -func New(network Network) *Server { +func New(network Network, options ...Option) *Server { server := &Server{ network: network, } @@ -28,20 +28,24 @@ func New(network Network) *Server { if network == NetworkHttp { server.httpServer = gin.New() } + for _, option := range options { + option(server) + } return server } // Server 网络服务器 type Server struct { *event - network Network - addr string - httpServer *gin.Engine - grpcServer *grpc.Server - gServer *gNet - messageChannel chan *message - initMessageChannel bool - multiple bool + network Network // 网络类型 + addr string // 侦听地址 + httpServer *gin.Engine // HTTP模式下的服务器 + grpcServer *grpc.Server // GRPC模式下的服务器 + gServer *gNet // TCP或UDP模式下的服务器 + messageChannel chan *message // 消息管道 + initMessageChannel bool // 消息管道是否已经初始化 + multiple bool // 是否为多服务器模式下运行 + prod bool // 是否为生产模式 } // Run 使用特定地址运行服务器 @@ -130,6 +134,9 @@ func (slf *Server) Run(addr string) error { } }) case NetworkHttp: + if slf.prod { + gin.SetMode(gin.ReleaseMode) + } go func() { if err := slf.httpServer.Run(addr); err != nil { slf.PushMessage(MessageTypeError, err, MessageErrorActionShutdown) @@ -215,6 +222,11 @@ func (slf *Server) Run(addr string) error { return nil } +// IsProd 是否为生产模式 +func (slf *Server) IsProd() bool { + return slf.prod +} + // Shutdown 停止运行服务器 func (slf *Server) Shutdown(err error) { if slf.initMessageChannel {