From 9ad931015bcc84be6975426bfa7e9d61eab6bb71 Mon Sep 17 00:00:00 2001 From: Loki's Wager <32408858+LokiWager@users.noreply.github.com> Date: Wed, 27 Sep 2023 09:53:18 +0800 Subject: [PATCH] Support websocket subprotocl. (#1092) * Support websocket subprotocl. * use HTTPHeader() --- 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..35a4a9ce49 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.HTTPHeader().Get("Sec-WebSocket-Protocol") + if subProtocol != "" { + opts.Subprotocols = []string{subProtocol} + } clntConn, err := websocket.Accept(stdw, req.Std(), opts) if err != nil { logger.Errorf("%s: failed to establish client connection: %v", sp.Name, err)