This example shows how to use @grpc/proto-loader & @grpc/grpc-js to build a fully typed CLI application that runs on Node.js.
@grpc/proto-loader to used to generate the types, as well as load the protobuf files at runtime using protobuf.js instead of google-protobuf.
No proto compiler is used. It's all JavaScript.
- package.json - Dependencies and build scripts
- proto/ - Protobuf definitions and generated types
- server.ts - The grpc server
- client.ts - The grpc client
Install dependencies:
npm installUse @grpc/proto-loader to generate the TypeScript files:
$(npm bin)/proto-loader-gen-types --longs=String --enums=String --defaults --oneofs --grpcLib=@grpc/grpc-js --outDir=proto/ proto/*.protoThis is aliased as a npm script:
npm run build:protoThis simple app demonstrates the different gRPC calls you can perform.
First generated the types and build the application files:
npm run buildStart the server:
npm run start:serverNow run the client by specifying which example you want to run:
npm run start:client -- --unary
npm run start:client -- --server-streaming
npm run start:client -- --client-streaming
npm run start:client -- --bidi-streaming