diff --git a/server/event.go b/server/event.go index fd570a5..c1d2cfa 100644 --- a/server/event.go +++ b/server/event.go @@ -314,7 +314,7 @@ func (slf *event) OnConnectionPacketPreprocessEvent(conn *Conn, packet []byte, u func (slf *event) check() { switch slf.network { - case NetworkHttp, NetworkGRPC: + case NetworkHttp, NetworkGRPC, NetworkNone: default: if len(slf.connectionReceivePacketEventHandles) == 0 { log.Warn("Server", log.String("ConnectionReceivePacketEvent", "invalid server, no packets processed")) diff --git a/server/network.go b/server/network.go index 2b7c843..97f1bac 100644 --- a/server/network.go +++ b/server/network.go @@ -3,6 +3,8 @@ package server type Network string const ( + // NetworkNone 该模式下不监听任何网络端口,仅开启消息队列,适用于纯粹的跨服服务器等情况 + NetworkNone Network = "none" NetworkTcp Network = "tcp" NetworkTcp4 Network = "tcp4" NetworkTcp6 Network = "tcp6" diff --git a/server/server.go b/server/server.go index 9b4c8b2..5b299ff 100644 --- a/server/server.go +++ b/server/server.go @@ -7,6 +7,7 @@ import ( "github.com/gorilla/websocket" "github.com/kercylan98/minotaur/utils/concurrent" "github.com/kercylan98/minotaur/utils/log" + "github.com/kercylan98/minotaur/utils/str" "github.com/kercylan98/minotaur/utils/super" "github.com/kercylan98/minotaur/utils/timer" "github.com/kercylan98/minotaur/utils/times" @@ -99,17 +100,21 @@ type Server struct { // Run 使用特定地址运行服务器 // -// server.NetworkTcp (addr:":8888") -// server.NetworkTcp4 (addr:":8888") -// server.NetworkTcp6 (addr:":8888") -// server.NetworkUdp (addr:":8888") -// server.NetworkUdp4 (addr:":8888") -// server.NetworkUdp6 (addr:":8888") -// server.NetworkUnix (addr:"socketPath") -// server.NetworkHttp (addr:":8888") -// server.NetworkWebsocket (addr:":8888/ws") -// server.NetworkKcp (addr:":8888") +// server.NetworkTcp (addr:":8888") +// server.NetworkTcp4 (addr:":8888") +// server.NetworkTcp6 (addr:":8888") +// server.NetworkUdp (addr:":8888") +// server.NetworkUdp4 (addr:":8888") +// server.NetworkUdp6 (addr:":8888") +// server.NetworkUnix (addr:"socketPath") +// server.NetworkHttp (addr:":8888") +// server.NetworkWebsocket (addr:":8888/ws") +// server.NetworkKcp (addr:":8888") +// server.NetworkNone (addr:"") func (slf *Server) Run(addr string) error { + if slf.network == NetworkNone { + addr = "-" + } if slf.event == nil { return ErrConstructed } @@ -143,6 +148,11 @@ func (slf *Server) Run(addr string) error { } switch slf.network { + case NetworkNone: + go connectionInitHandle(func() { + slf.isRunning = true + slf.OnStartBeforeEvent() + }) case NetworkGRPC: listener, err := net.Listen(string(NetworkTcp), slf.addr) if err != nil { @@ -346,6 +356,11 @@ func (slf *Server) Run(addr string) error { return nil } +// RunNone 是 Run("") 的简写,仅适用于运行 NetworkNone 服务器 +func (slf *Server) RunNone() error { + return slf.Run(str.None) +} + // GetOnlineCount 获取在线人数 func (slf *Server) GetOnlineCount() int { return slf.online.Size()