From 3b71eca5978ab038a215cdeb453c1f81382583e4 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Fri, 12 Jan 2024 17:25:06 +0800 Subject: [PATCH] =?UTF-8?q?style:=20=E4=BC=98=E5=8C=96=20server=20?= =?UTF-8?q?=E5=8C=85=E9=83=A8=E5=88=86=E4=BB=A3=E7=A0=81=E5=8F=AF=E8=AF=BB?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/network.go | 16 ++++++++++++++++ server/server.go | 4 +--- server/service.go | 4 ++-- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/server/network.go b/server/network.go index 29932bb..3e5c1f0 100644 --- a/server/network.go +++ b/server/network.go @@ -41,6 +41,17 @@ var ( networks = []Network{ NetworkNone, NetworkTcp, NetworkTcp4, NetworkTcp6, NetworkUdp, NetworkUdp4, NetworkUdp6, NetworkUnix, NetworkHttp, NetworkWebsocket, NetworkKcp, NetworkGRPC, } + socketNetworks = map[Network]struct{}{ + NetworkTcp: {}, + NetworkTcp4: {}, + NetworkTcp6: {}, + NetworkUdp: {}, + NetworkUdp4: {}, + NetworkUdp6: {}, + NetworkUnix: {}, + NetworkKcp: {}, + NetworkWebsocket: {}, + } ) func init() { @@ -305,3 +316,8 @@ func (n Network) websocketMode(state chan<- error, srv *Server) { } }((&listener{srv: srv, Listener: l, state: state}).init()) } + +// IsSocket 返回当前服务器的网络模式是否为 Socket 模式 +func (n Network) IsSocket() bool { + return collection.KeyInMap(socketNetworks, n) +} diff --git a/server/server.go b/server/server.go index 7d7871d..c5c8d73 100644 --- a/server/server.go +++ b/server/server.go @@ -149,9 +149,7 @@ func (srv *Server) Run(addr string) (err error) { // IsSocket 是否是 Socket 模式 func (srv *Server) IsSocket() bool { - return srv.network == NetworkTcp || srv.network == NetworkTcp4 || srv.network == NetworkTcp6 || - srv.network == NetworkUdp || srv.network == NetworkUdp4 || srv.network == NetworkUdp6 || - srv.network == NetworkUnix || srv.network == NetworkKcp || srv.network == NetworkWebsocket + return srv.network.IsSocket() } // RunNone 是 Run("") 的简写,仅适用于运行 NetworkNone 服务器 diff --git a/server/service.go b/server/service.go index b0285aa..54abe6c 100644 --- a/server/service.go +++ b/server/service.go @@ -14,8 +14,8 @@ type Service interface { // BindService 绑定服务到特定 Server,被绑定的服务将会在 Server 初始化时执行 Service.OnInit 方法 func BindService(srv *Server, services ...Service) { - for _, service := range services { - service := service + for i := 0; i < len(services); i++ { + service := services[i] srv.services = append(srv.services, func() { name := reflect.TypeOf(service).String() defer func(name string) {