Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ConnectViaProxy ¶
func ConnectViaProxy(ctx context.Context, endpoint string, tlsClientConf *tls.Config, opts ...ConnectOption) (*grpc.ClientConn, error)
ConnectViaProxy establishes a gRPC client connection via a HTTP/2 proxy that handles endpoints behind HTTP/1.x proxies. Use the WithWebSocket() ConnectOption if you want to connect to a server via WebSocket. Otherwise, setting it to false will use a gRPC-Web "downgrade", as needed.
Using WebSocket will allow for both streaming and non-streaming gRPC requests, but is not adaptive. Using gRPC-Web "downgrades" will only allow for non-streaming gRPC requests, but will only downgrade if necessary. This method supports server-streaming requests, but only if there isn't a proxy in the middle that buffers chunked responses.
Types ¶
type ConnectOption ¶
type ConnectOption interface {
// contains filtered or unexported methods
}
ConnectOption is an option that can be passed to the `ConnectViaProxy` method.
func DialOpts ¶
func DialOpts(dialOpts ...grpc.DialOption) ConnectOption
DialOpts returns a connect option that applies the given gRPC dial options when connecting.
func ExtraH2ALPNs ¶
func ExtraH2ALPNs(alpns ...string) ConnectOption
ExtraH2ALPNs returns a connection option that instructs the client to use the given ALPN names as HTTP/2 equivalent.
This option is ignored when `UseWebSocket(true)` is set.
func ForceDowngrade ¶
func ForceDowngrade(force bool) ConnectOption
ForceDowngrade returns a connection option that instructs the client to always force gRPC-Web downgrade for gRPC requests. Client- or Bidi-streaming requests will not work. This option has no effect if websockets are being used.
func ForceHTTP2 ¶
func ForceHTTP2() ConnectOption
ForceHTTP2 returns a connection option that instructs the client to force using HTTP/2 even in the absence of ALPN. This is required for servers that only speak HTTP/2 (e.g., the vanilla gRPC server regardless of the language), but might break things if the server does not support HTTP/2 or expects HTTP/1. Generally, working with any kind of server requires a TLS connection that allows for ALPN.
This option is ignored when `UseWebSocket(true)` is set.
func UseWebSocket ¶
func UseWebSocket(use bool) ConnectOption
UseWebSocket returns a connection option that instructs the client to use or not use a WebSocket connection with the server. The default is to not use a WebSocket connection.