/grpc-server-js

Pure JavaScript gRPC Server

Primary LanguageJavaScriptMIT LicenseMIT

grpc-server-js

Current Version Build Status via Travis CI Dependencies belly-button-style

Pure JavaScript gRPC Server

Documentation

The goal is to be largely compatible with the existing Server implementation.

Features

  • 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.

Public API Deviations from the Existing grpc.Server

  • Server.prototype.bind() is an async function.
  • The deprecated Server.prototype.addProtoService() is not implemented.
  • Server.prototype.addHttp2Port() is not implemented.
  • Server.prototype.forceShutdown() is not implemented.

Useful References

Acknowledgement

This module is heavily inspired by the grpc native module. Some of the source code is adapted from the @grpc/grpc-js module.