grpcweb

package
v0.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 31, 2018 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultTransportBuilder       TransportBuilder       = HTTPTransportBuilder
	DefaultStreamTransportBuilder StreamTransportBuilder = WebSocketTransportBuilder
)
View Source
var (
	ErrConnectionClosed = errors.New("connection closed")
)

Functions

func ToEndpoint

ToEndpoint generates an endpoint from a service descriptor and a method descriptor.

Types

type BidiStreamClient

type BidiStreamClient interface {
	Send(*Request) error
	Receive() (*Response, error)
	Close() error
}

BidiStreamClient sends multi requests and receives multi responses. At the end, BidiStreamClient must be call Close method.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client starts each API session.

func NewClient

func NewClient(host string, opts ...ClientOption) *Client

NewClient instantiates new API client for a gRPC Web API server. Client accepts some options to configure transports, codec, and so on. The default codec is Protocol Buffers.

func (*Client) BidiStreaming

func (c *Client) BidiStreaming(ctx context.Context, req *Request) (BidiStreamClient, error)

BidiStreamClient instantiates bidirectional streaming client.

func (*Client) ClientStreaming

func (c *Client) ClientStreaming(ctx context.Context) (ClientStreamClient, error)

ClientStreamClient sends multi requests and receives only one response.

func (*Client) ServerStreaming

func (c *Client) ServerStreaming(ctx context.Context, req *Request) (ServerStreamClient, error)

ServerStreamClient sends only one request and receives multi responses through a stream.

func (*Client) Unary

func (c *Client) Unary(ctx context.Context, req *Request) (*Response, error)

Unary sends an unary request. (also known as simple request)

type ClientOption

type ClientOption func(*Client)

func WithCodec

func WithCodec(codec encoding.Codec) ClientOption

func WithStreamTransportBuilder

func WithStreamTransportBuilder(b StreamTransportBuilder) ClientOption

func WithTransportBuilder

func WithTransportBuilder(b TransportBuilder) ClientOption

type ClientStreamClient

type ClientStreamClient interface {
	Send(*Request) error
	CloseAndReceive() (*Response, error)
}

ClientStreamClient sends multi requests and receives only one response. At the end, ClientStreamClient must be call CloseAndReceive method.

type HTTPTransport

type HTTPTransport struct {
	// contains filtered or unexported fields
}

func (*HTTPTransport) Send

func (t *HTTPTransport) Send(ctx context.Context, body io.Reader) (io.ReadCloser, error)

type Request

type Request struct {
	// contains filtered or unexported fields
}

func NewRequest

func NewRequest(
	endpoint string,
	in proto.Message,
	out proto.Message,
) *Request

NewRequest instantiates new API request from passed endpoint and I/O types. endpoint must be formed like:

"/{package name}.{service name}/{method name}"

type Response

type Response struct {
	ContentType string
	Content     interface{}
}

Response contains ContentType and its Content. ContentType is same as the value of Name() of encoding.Codec. Actual type of Content is depends on ContentType. For example, proto.Message if ContentType is "proto".

type ServerStreamClient

type ServerStreamClient interface {
	Receive() (*Response, error)
}

type StreamTransport

type StreamTransport interface {
	Send(body io.Reader) error
	Receive() (io.ReadCloser, error)

	// Finish sends EOF request to the server.
	Finish() (io.ReadCloser, error)

	// Close closes the connection.
	Close() error
}

StreamTransport is used to send API requests for ClientStreamClient and BidiStreamClient.

func WebSocketTransportBuilder

func WebSocketTransportBuilder(host string, endpoint string) (StreamTransport, error)

type StreamTransportBuilder

type StreamTransportBuilder func(host string, endpoint string) (StreamTransport, error)

type Transport

type Transport interface {
	Send(ctx context.Context, body io.Reader) (io.ReadCloser, error)
}

Transport creates new request. Transport is created only one per one request, MUST not use used transport again.

func HTTPTransportBuilder

func HTTPTransportBuilder(host string, req *Request) Transport

type TransportBuilder

type TransportBuilder func(host string, req *Request) Transport

type WebSocketTransport

type WebSocketTransport struct {
	// contains filtered or unexported fields
}

WebSocketTransport is a stream transport implementation.

Currently, gRPC Web specification does not support client streaming. (https://github.com/improbable-eng/grpc-web#client-side-streaming) WebSocketTransport supports improbable-eng/grpc-web's own implementation.

spec: https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-WEB.md

func (*WebSocketTransport) Close

func (t *WebSocketTransport) Close() error

func (*WebSocketTransport) Finish

func (t *WebSocketTransport) Finish() (io.ReadCloser, error)

func (*WebSocketTransport) Receive

func (t *WebSocketTransport) Receive() (res io.ReadCloser, err error)

func (*WebSocketTransport) Send

func (t *WebSocketTransport) Send(body io.Reader) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL