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)