0.15.0 • Published 3 years ago

@improbable-eng/grpc-web v0.15.0

Weekly downloads
37,597
License
Apache-2.0
Repository
-
Last release
3 years ago

@improbable-eng/grpc-web

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

@improbable-eng/grpc-web has peer dependencies of google-protobuf and @types/google-protobuf.

npm install google-protobuf @types/google-protobuf @improbable-eng/grpc-web --save

Example Project

There is an example project available here

Usage Overview

import {grpc} from "@improbable-eng/grpc-web";

// Import code-generated data structures.
import {BookService} from "./generated/proto/examplecom/library/book_service_pb_service";
import {GetBookRequest} from "./generated/proto/examplecom/library/book_service_pb";

const getBookRequest = new GetBookRequest();
getBookRequest.setIsbn(60929871);
grpc.unary(BookService.GetBook, {
  request: getBookRequest,
  host: host,
  onEnd: res => {
    const { status, statusMessage, headers, message, trailers } = res;
    if (status === grpc.Code.OK && message) {
      console.log("all ok. got book: ", message.toObject());
    }
  }
});
  • Requests can be aborted/cancelled before they complete:
const request = grpc.unary(BookService.GetBook, { ... });
request.cancel();

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.

All Docs

@cobaltspeech/sdk-cubiczoobc-sdk-jszoobcep3-ls-clientinjective-apisummer-solutions-api-service@corioders/stdcasperlabs-grpccasperlabs-sdkcasperlabsjs@alexey-ulashchick/dashboard-protos@pognetwork/champ-protocogmentmessina-sdktemporamolestiaertk-query-grpc-webstability-clientstability-client-maskstability-tssun-dd-clistateset-jssecretjs-cjgssecretjs-hmtrpc_tstestreactrpcv2-stability-client@careerkarma/ion-sdk-js@stemsdao/backend-client@moonknightlabs/clijs-im-clientjsmarketstorejmes.protoiroha-helpersiroha-helpers-eugeneiroha-helpers-eugene0iroha-helpers-new-grpciroha-helpers-tsipfs-grpc-cliention-sdk-jsion-sdk-js-v2jackal.js-protosgrpc-docsgrpc-bchrpc-webgrpc-form-tsgrpc-web-ts-compilerhello-api-grpcwebmt-ion-sdk-jsopen-im-ionprotowebjspixui-custom-scrollbarpixui-sprite-makerreactrpcreact-im-viewnonsimiliquequant-grpc-docsskyeye-svc-common-grpcsocproxsliver-scriptsome-chain-sdktrustlesscontractsjstypescript-repo-templatetroila-im-libtwin-grpc-web@andrew54068/sdk@algo-foundry/messina-sdk@alephium/wormhole-sdk@aitmed/aitmed-grpc-sdk@aitmed/aitmed-grpc-sdk-test@aitmed/crypto-sdk@aitmed/crypto-sdk-test@bandprotocol/bandchain.js@blocto/protobuf@chris.troutner/ipfs-grpc-client@classic-terra/terra.proto@chain.js/proto@certusone/wormhole-sdk-proto-web@cloud8little/latticexyz-cli@0xcleon/wormhole-sdk-proto-web@5sim/hub-server-client@codewritz/herajs-client@cogment/cogment-js-sdk@berty/grpc-bridge@dcl/ion-sdk-js@dcl/voice@depyronick/stability-client@devvit/cli@dashevo/dapi-grpc@daodiseomoney/daodiseo.proto@davmixcool/stability-tszbc-sdkzoobc-sdk@h0ngcha0/wormhole-sdk@forbole/cosmos-protobuf-js@hemistereo/applicationservice-client@herajs/client@gcpdev/ion-sdk-js@fuzio/sei-grpc@furyanetwork/fury.proto@furyanetwork/furya.proto@geo-web/mud-cli
0.15.0

3 years ago

0.14.1

3 years ago

0.14.0

4 years ago

0.13.0

4 years ago

0.12.0

5 years ago

0.11.0

5 years ago

0.10.0

5 years ago

0.9.6

6 years ago

0.9.5

6 years ago

0.9.4

6 years ago

0.9.3

6 years ago

0.9.2

6 years ago

0.9.1

6 years ago

0.8.0

6 years ago