0.15.0 • Published 4 years ago

@improbable-eng/grpc-web v0.15.0

Weekly downloads
37,597
License
Apache-2.0
Repository
-
Last release
4 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-sdktemporamolestiaestability-clientstability-client-maskstability-tssun-dd-clistateset-jstestreactrpcv2-stability-client@corioders/jskit@bpiv400/terra.proto@routerprotocol/chain-api@routerprotocol/router-chain-sdk-ts@routerprotocol/sdk-ts@pbkit/grpc-web-client@terra-rebels/terra.protoipfs-grpc-clientjmes.protojsmarketstorejs-im-clientiroha-helpers-new-grpciroha-helpers-tsiroha-helpersiroha-helpers-eugeneiroha-helpers-eugene0jackal.js-protoshello-api-grpcwebion-sdk-jsion-sdk-js-v2@webtor/platform-sdk-js@web4/iq.proto@wxysdk/wormhole-sdk@terra-money/terra.proto@textile/textile@textile/threads-net-grpc@textile/threads-network-client@textile/threads-service-client@textile/threads-service-grpc@textile/users@textile/users-grpc@textile/threads-client-pb@textile/threaddb@textile/threads-api-pb@textile/threads-client@textile/threads-client-grpc@tetherhelix/tetherhelix_grpc@textile/buck-util@textile/buckets@textile/hub-filecoin@textile/hub-grpc@textile/hub-threads-client@textile/pow@textile/grpc-connection@textile/grpc-powergate-client@textile/grpc-transport@textile/buckets-grpc@textile/buckr@textile/context@textile/hub-admin@viamrobotics/rover-rental@viamrobotics/rpc@viamrobotics/omnirpc@velo-dao/velo-grpc@vertexvis/viewer@xpla/xpla.proto@yabjob/lcrm-grpcalephium-wormhole-sdkalph-wormhole-sdk@zionchat/use-zion@zup-it/beagle-web-grpc@classic-terra/terra.proto@iotics/grpc-client@cloud8little/latticexyz-cli@chris.troutner/ipfs-grpc-client@5sim/hub-server-client@0xcleon/wormhole-sdk-proto-web@h0ngcha0/wormhole-sdk@cogment/cogment-js-sdk@codewritz/herajs-client@aitmed/aitmed-grpc-sdk@aitmed/aitmed-grpc-sdk-test@aitmed/crypto-sdk@aitmed/crypto-sdk-test@complyify/sdk@complyify/thebar@concha-network/cli@algo-foundry/messina-sdk
0.15.0

4 years ago

0.14.1

4 years ago

0.14.0

5 years ago

0.13.0

5 years ago

0.12.0

6 years ago

0.11.0

6 years ago

0.10.0

6 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

7 years ago

0.8.0

7 years ago