Skip to content

Commit

Permalink
fix: 修复 server 包 None 网络类型启动阻塞的问题。增加传入不支持网络类型将导致 panic 的特性。优化 WebSock…
Browse files Browse the repository at this point in the history
…et 服务器将不再使用 http.DefaultMuxServer,转而使用 http.NewServeMux
  • Loading branch information
kercylan98 committed Jan 15, 2024
1 parent 2b46402 commit 1645ae4
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions server/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ func (n Network) adaptation(srv *Server) <-chan error {
switch n {
case NetworkNone:
srv.addr = "-"
state <- nil
case NetworkTcp:
n.gNetMode(state, srv)
case NetworkTcp4:
Expand All @@ -125,6 +126,8 @@ func (n Network) adaptation(srv *Server) <-chan error {
n.kcpMode(state, srv)
case NetworkGRPC:
n.grpcMode(state, srv)
default:
state <- fmt.Errorf("unsupported network mode: %s", n)
}
return state
}
Expand Down Expand Up @@ -248,7 +251,8 @@ func (n Network) websocketMode(state chan<- error, srv *Server) {
if srv.websocketUpgrader == nil {
srv.websocketUpgrader = DefaultWebsocketUpgrader()
}
http.HandleFunc(pattern, func(writer http.ResponseWriter, request *http.Request) {
mux := http.NewServeMux()
mux.HandleFunc(pattern, func(writer http.ResponseWriter, request *http.Request) {
ip := request.Header.Get("X-Real-IP")
ws, err := srv.websocketUpgrader.Upgrade(writer, request, nil)
if err != nil {
Expand Down Expand Up @@ -304,17 +308,17 @@ func (n Network) websocketMode(state chan<- error, srv *Server) {
srv.PushPacketMessage(conn, messageType, packet)
}
})
go func(lis *listener) {
go func(lis *listener, mux *http.ServeMux) {
var err error
if len(lis.srv.certFile)+len(lis.srv.keyFile) > 0 {
err = http.ServeTLS(lis, nil, lis.srv.certFile, lis.srv.keyFile)
err = http.ServeTLS(lis, mux, lis.srv.certFile, lis.srv.keyFile)
} else {
err = http.Serve(lis, nil)
err = http.Serve(lis, mux)
}
if err != nil {
super.TryWriteChannel(lis.state, err)
}
}((&listener{srv: srv, Listener: l, state: state}).init())
}((&listener{srv: srv, Listener: l, state: state}).init(), mux)
}

// IsSocket 返回当前服务器的网络模式是否为 Socket 模式
Expand Down

0 comments on commit 1645ae4

Please sign in to comment.