https://github.com/konsumer/grpcnode
Simple GRPC server & client
https://github.com/konsumer/grpcnode
Last synced: 11 months ago
JSON representation
Simple GRPC server & client
- Host: GitHub
- URL: https://github.com/konsumer/grpcnode
- Owner: konsumer
- License: mit
- Created: 2017-01-25T00:37:16.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2021-02-12T13:26:53.000Z (over 5 years ago)
- Last Synced: 2025-03-17T03:04:29.374Z (over 1 year ago)
- Language: JavaScript
- Size: 536 KB
- Stars: 7
- Watchers: 2
- Forks: 7
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Simple node-based gRPC client/server
When you want a quick gRPC server or client, made with node.
[](https://nodei.co/npm/grpcnode/)
## cli
Install with `npm i -g grpcnode`.
Now, you can use it like this:
```
grpcnode
Commands:
grpcnode server Start a gRPC server with your proto and javascript files
grpcnode client Act as a client of a gRPC server
Options:
--help Show help [boolean]
--ca SSL CA cert
--key SSL server key
--cert SSL server certificate
-h, --host The host/port to run the gRPC server on [default: "localhost:50051"]
-v, --version Show version number [boolean]
-I, --include Root include path (sorry only one root-path works)
Examples:
grpcnode client --help Get more help about the client command
grpcnode server --help Get more help about the server command
```
### ssl
With SSL, you will need the Cert Authority certificate, client & server signed certificate and keys.
I generated/signed my demo keys like this:
```
openssl genrsa -passout pass:1111 -des3 -out ca.key 4096
openssl req -passin pass:1111 -new -x509 -days 365 -key ca.key -out ca.crt -subj "/C=US/ST=Oregon/L=Portland/O=Test/OU=CertAuthority/CN=localhost"
openssl genrsa -passout pass:1111 -des3 -out server.key 4096
openssl req -passin pass:1111 -new -key server.key -out server.csr -subj "/C=US/ST=Oregon/L=Portland/O=Test/OU=Server/CN=localhost"
openssl x509 -req -passin pass:1111 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
openssl rsa -passin pass:1111 -in server.key -out server.key
openssl genrsa -passout pass:1111 -des3 -out client.key 4096
openssl req -passin pass:1111 -new -key client.key -out client.csr -subj "/C=US/ST=Oregon/L=Portland/O=Test/OU=Client/CN=localhost"
openssl x509 -passin pass:1111 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt
openssl rsa -passin pass:1111 -in client.key -out client.key
```
Then use it on server, like this:
```
grpcnode server --ca=ca.crt --key=server.key --cert=server.crt -I example/ example/helloworld.proto example/helloworld.js
```
And client, like this:
```
grpcnode client run --ca=ca.crt --key=client.key --cert=client.crt -I example/proto helloworld.proto -c '/helloworld.v1.Greeter/SayGoodbye({"name":"World"})'
```
### examples
You can see an example project [here](https://github.com/konsumer/grpcnode/tree/master/example) that shows how to use all the CLI tools, with no code other than your endpoint implementation.
- Get a list of methods/message-types: `grpcnode client ls -I ./example/proto helloworld.proto`
- Start a server: `grpc-server -I example/ example/*.js example/*.proto` or `node server.js -I example/ example/helloworld.js helloworld.proto`
- Run an RPC on server: `grpcnode server -I example/proto helloworld.proto example/helloworld.js`