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 install
Use @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/*.proto
This is aliased as a npm script:
npm run build:proto
This simple app demonstrates the different gRPC calls you can perform.
First generated the types and build the application files:
npm run build
Start the server:
npm run start:server
Now 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