Pure JavaScript gRPC Server
The goal is to be largely compatible with the existing Server
implementation.
- Unary calls.
- Streaming client request calls.
- Streaming server response calls.
- Bidirectional streaming calls.
- Deadline and cancellation support.
- Support for gzip and deflate compression, as well as uncompressed messages.
- The only third party dependency is
@grpc/grpc-js
, which is used for some shared data structures. - No C++ dependencies. This implementation relies on Node's
http2
module. - Supports the following gRPC server options:
grpc.http2.max_frame_size
grpc.keepalive_time_ms
grpc.keepalive_timeout_ms
- All possible options and their descriptions are available here.
Server.prototype.bind()
is anasync
function.- The deprecated
Server.prototype.addProtoService()
is not implemented. Server.prototype.addHttp2Port()
is not implemented.Server.prototype.forceShutdown()
is not implemented.
- What is gRPC?
- gRPC over HTTP2
- gRPC Compression
- gRPC Environment Variables
- gRPC Keepalive
- gRPC Status Codes
This module is heavily inspired by the grpc
native module. Some of the source code is adapted from the @grpc/grpc-js
module.