code: func WebsocketProxy(h http.Handler, opts ...Option) http.Handler {
  	p := &Proxy{
  		h:                   h,
  		logger:              logrus.New(),
  		methodOverrideParam: MethodOverrideParam,
  		tokenCookieName:     TokenCookieName,
  		headerForwarder:     defaultHeaderForwarder,
  	}
  	for _, o := range opts {
  		o(p)
  	}
  	return p
  }
docs: // WebsocketProxy attempts to expose the underlying handler as a bidi websocket stream with newline-delimited
  // JSON as the content encoding.
  //
  // The HTTP Authorization header is either populated from the Sec-Websocket-Protocol field or by a cookie.
  // The cookie name is specified by the TokenCookieName value.
  //
  // example:
  //   Sec-Websocket-Protocol: Bearer, foobar
  // is converted to:
  //   Authorization: Bearer foobar
  //
  // Method can be overwritten with the MethodOverrideParam get parameter in the requested URL