From ee4d16e971a2341f844c6af6707c09936b9ee22e Mon Sep 17 00:00:00 2001 From: LokiWager Date: Tue, 26 Sep 2023 21:27:35 +0800 Subject: [PATCH 1/2] Support websocket subprotocl. --- pkg/filters/proxies/httpproxy/wspool.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/filters/proxies/httpproxy/wspool.go b/pkg/filters/proxies/httpproxy/wspool.go index 5fffa26c4a..593af67602 100644 --- a/pkg/filters/proxies/httpproxy/wspool.go +++ b/pkg/filters/proxies/httpproxy/wspool.go @@ -189,6 +189,10 @@ func (sp *WebSocketServerPool) handle(ctx *context.Context) (result string) { InsecureSkipVerify: sp.spec.InsecureSkipVerify, OriginPatterns: sp.spec.OriginPatterns, } + subProtocol := req.Header().Get("Sec-WebSocket-Protocol") + if subProtocol != "" { + opts.Subprotocols = []string{subProtocol.(string)} + } clntConn, err := websocket.Accept(stdw, req.Std(), opts) if err != nil { logger.Errorf("%s: failed to establish client connection: %v", sp.Name, err) From 54ddff151014c1a5f6468cb305eddfaf72ced5cb Mon Sep 17 00:00:00 2001 From: LokiWager Date: Wed, 27 Sep 2023 08:43:27 +0800 Subject: [PATCH 2/2] use HTTPHeader() --- pkg/filters/proxies/httpproxy/wspool.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/filters/proxies/httpproxy/wspool.go b/pkg/filters/proxies/httpproxy/wspool.go index 593af67602..35a4a9ce49 100644 --- a/pkg/filters/proxies/httpproxy/wspool.go +++ b/pkg/filters/proxies/httpproxy/wspool.go @@ -189,9 +189,9 @@ func (sp *WebSocketServerPool) handle(ctx *context.Context) (result string) { InsecureSkipVerify: sp.spec.InsecureSkipVerify, OriginPatterns: sp.spec.OriginPatterns, } - subProtocol := req.Header().Get("Sec-WebSocket-Protocol") + subProtocol := req.HTTPHeader().Get("Sec-WebSocket-Protocol") if subProtocol != "" { - opts.Subprotocols = []string{subProtocol.(string)} + opts.Subprotocols = []string{subProtocol} } clntConn, err := websocket.Accept(stdw, req.Std(), opts) if err != nil {