From 6b323e6b5d962f96f87dd795aa776642257151cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E5=8D=87?= Date: Tue, 31 Oct 2023 09:51:56 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dwebsocket=20Stop=E4=B8=8ERest?= =?UTF-8?q?art=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- znet/server.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/znet/server.go b/znet/server.go index fe78cda..60f4b0f 100644 --- a/znet/server.go +++ b/znet/server.go @@ -255,8 +255,8 @@ func (s *Server) ListenTcpConn() { } func (s *Server) ListenWebsocketConn() { - - http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + mux := http.NewServerMux() + mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // 1. Check if the server has reached the maximum allowed number of connections // (设置服务器最大连接控制,如果超过最大连接,则等待) if s.ConnMgr.Len() >= zconf.GlobalObject.MaxConn { @@ -297,10 +297,19 @@ func (s *Server) ListenWebsocketConn() { go s.StartConn(wsConn) }) - - err := http.ListenAndServe(fmt.Sprintf("%s:%d", s.IP, s.WsPort), nil) - if err != nil { - panic(err) + server := &http.Server{Addr: fmt.Sprintf("%s:%d", s.IP, s.WsPort), Handle: mux} + go func(){ + err := server.ListenAndServe() + if err != nil { + zlog.Ins().ErrorF("listener exit err: %v", err) + } + } + select { + case <-s.exitChan: + err := server.Close() + if err != nil { + zlog.Ins().ErrorF("listener close err: %v", err) + } } } -- Gitee