func Negotiate(rt http.RoundTripper, connectionInfo ConnectionHolder, req *http.Request, protocols ...string) (*gwebsocket.Conn, error)
Negotiate opens a connection to a remote server and attempts to negotiate a WebSocket connection. Upon success, it returns the negotiated connection. The round tripper rt must use the WebSocket round tripper wsRt - see RoundTripperFor.
ConnectionHolder defines functions for structure providing access to the websocket connection.
type ConnectionHolder interface { DataBufferSize() int Connection() *gwebsocket.Conn }
func RoundTripperFor(config *restclient.Config) (http.RoundTripper, ConnectionHolder, error)
RoundTripperFor transforms the passed rest config into a wrapped roundtripper, as well as a pointer to the websocket RoundTripper. The websocket RoundTripper contains the websocket connection after RoundTrip() on the wrapper. Returns an error if there is a problem creating the round trippers.
RoundTripper knows how to establish a connection to a remote WebSocket endpoint and make it available for use. RoundTripper must not be reused.
type RoundTripper struct { // TLSConfig holds the TLS configuration settings to use when connecting // to the remote server. TLSConfig *tls.Config // Proxier specifies a function to return a proxy for a given // Request. If the function returns a non-nil error, the // request is aborted with the provided error. // If Proxy is nil or returns a nil *URL, no proxy is used. Proxier func(req *http.Request) (*url.URL, error) // Conn holds the WebSocket connection after a round trip. Conn *gwebsocket.Conn }
func (rt *RoundTripper) Connection() *gwebsocket.Conn
Connection returns the stored websocket connection.
func (rt *RoundTripper) DataBufferSize() int
DataBufferSize returns the size of buffers for the websocket connection.
func (rt *RoundTripper) RoundTrip(request *http.Request) (retResp *http.Response, retErr error)
RoundTrip connects to the remote websocket using the headers in the request and the TLS configuration from the config
func (rt *RoundTripper) TLSClientConfig() *tls.Config
TLSClientConfig implements pkg/util/net.TLSClientConfigHolder.