diff --git a/server/event.go b/server/event.go index c906c2d..0999b24 100644 --- a/server/event.go +++ b/server/event.go @@ -45,11 +45,9 @@ func (slf *event) RegStopEvent(handle StopEventHandle) { } func (slf *event) OnStopEvent() { - PushSystemMessage(slf.Server, func() { - for _, handle := range slf.stopEventHandles { - handle(slf.Server) - } - }) + for _, handle := range slf.stopEventHandles { + handle(slf.Server) + } } // RegConsoleCommandEvent 控制台收到指令时将立即执行被注册的事件处理函数 diff --git a/server/multiple.go b/server/multiple.go index 06a96f9..a4449fb 100644 --- a/server/multiple.go +++ b/server/multiple.go @@ -72,6 +72,9 @@ func (slf *MultipleServer) Run() { signal.Notify(systemSignal, syscall.SIGHUP, syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT) select { case err := <-exceptionChannel: + for _, server := range slf.servers { + server.OnStopEvent() + } for len(slf.servers) > 0 { server := slf.servers[0] server.shutdown(err) @@ -79,6 +82,9 @@ func (slf *MultipleServer) Run() { } break case <-runtimeExceptionChannel: + for _, server := range slf.servers { + server.OnStopEvent() + } for len(slf.servers) > 0 { server := slf.servers[0] server.multipleRuntimeErrorChan = nil @@ -87,6 +93,9 @@ func (slf *MultipleServer) Run() { } break case <-systemSignal: + for _, server := range slf.servers { + server.OnStopEvent() + } for len(slf.servers) > 0 { server := slf.servers[0] server.multipleRuntimeErrorChan = nil diff --git a/server/server.go b/server/server.go index e89b0c2..210bc2e 100644 --- a/server/server.go +++ b/server/server.go @@ -392,7 +392,9 @@ func (slf *Server) Shutdown() { // shutdown 停止运行服务器 func (slf *Server) shutdown(err error) { - slf.OnStopEvent() + if slf.multiple == nil { + slf.OnStopEvent() + } defer func() { if slf.multipleRuntimeErrorChan != nil { slf.multipleRuntimeErrorChan <- err