diff --git a/server/multiple.go b/server/multiple.go index 602a0b7..0335a16 100644 --- a/server/multiple.go +++ b/server/multiple.go @@ -3,6 +3,7 @@ package server import ( "github.com/kercylan98/minotaur/utils/log" "github.com/kercylan98/minotaur/utils/network" + "github.com/xtaci/kcp-go/v5" "math" "os" "os/signal" @@ -35,8 +36,12 @@ func (slf *MultipleServer) Run() { close(runtimeExceptionChannel) }() var wait sync.WaitGroup + var hasKcp bool for i := 0; i < len(slf.servers); i++ { wait.Add(1) + if slf.servers[i].network == NetworkKcp { + hasKcp = true + } go func(address string, server *Server) { var lock sync.Mutex var startFinish bool @@ -62,6 +67,9 @@ func (slf *MultipleServer) Run() { }(slf.addresses[i], slf.servers[i]) } wait.Wait() + if !hasKcp { + kcp.SystemTimedSched.Close() + } log.Info("Server", log.String(serverMultipleMark, "====================================================================")) ip, _ := network.IP() diff --git a/server/server.go b/server/server.go index 48c4c3f..098337b 100644 --- a/server/server.go +++ b/server/server.go @@ -352,6 +352,10 @@ func (slf *Server) Run(addr string) error { return ErrCanNotSupportNetwork } + if slf.multiple == nil && slf.network != NetworkKcp { + kcp.SystemTimedSched.Close() + } + <-messageInitFinish close(messageInitFinish) messageInitFinish = nil diff --git a/server/server_test.go b/server/server_test.go index a79a03c..d06a3cc 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -11,7 +11,7 @@ import ( func TestNew(t *testing.T) { //limiter := rate.NewLimiter(rate.Every(time.Second), 100) - srv := server.New(server.NetworkWebsocket, server.WithMessageBufferSize(1024*1024), server.WithPProf()) + srv := server.New(server.NetworkWebsocket, server.WithTicker(200, 10, false), server.WithMessageBufferSize(1024*1024), server.WithPProf()) //srv.RegMessageExecBeforeEvent(func(srv *server.Server, message *server.Message) bool { // t, c := srv.TimeoutContext(time.Second * 5) // defer c()