grpc-web-client
Library for making gRPC-Web requests from a browser
This library is intended for both JavaScript and TypeScript usage from a web browser or NodeJS (see Usage with NodeJS).
Note: This only works if the server supports gRPC-Web
A Golang gRPC-Web middleware and a Golang-based gRPC-Web proxy are available here.
Please see the full gRPC-Web README for known limitations.
Installation
grpc-web-client
has peer dependencies of google-protobuf
and @types/google-protobuf
.
npm install google-protobuf @types/google-protobuf grpc-web-client --save
Example Project
There is an example project available here
Usage Overview
- Use
ts-protoc-gen
withprotoc
to generate.js
and.d.ts
files for your request and response classes.ts-protoc-gen
can also generate gRPC service definitions with theservice=true
argument. - Make a request using
unary()
,invoke()
orclient()
; // Import code-generated data structures.;; const getBookRequest = ;getBookRequest;grpc;
- Requests can be aborted/cancelled before they complete:
const request = grpc;request;
Available Request Functions
There are three functions for making gRPC requests:
grpc.unary
This is a convenience function for making requests that consist of a single request message and single response message. It can only be used with unary methods.
rpc GetBook(GetBookRequest) returns (Book) {}
grpc.invoke
This is a convenience function for making requests that consist of a single request message and a stream of response messages (server-streaming). It can also be used with unary methods.
rpc GetBook(GetBookRequest) returns (Book) {}rpc QueryBooks(QueryBooksRequest) returns (stream Book) {}
grpc.client
grpc.client
returns a client. Dependant upon transport compatibility this client is capable of sending multiple request messages (client-streaming) and receiving multiple response messages (server-streaming). It can be used with any type of method, but will enforce limiting the sending of messages for unary methods.
rpc GetBook(GetBookRequest) returns (Book) {}rpc QueryBooks(QueryBooksRequest) returns (stream Book) {}rpc LogReadPages(stream PageRead) returns (google.protobuf.Empty) {}rpc ListenForBooks(stream QueryBooksRequest) returns (stream Book) {}
Usage with NodeJS
Refer to grpc-web-node-http-transport.