Skip to content
This repository has been archived by the owner on Sep 28, 2021. It is now read-only.

cjihrig/grpc-server-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

grpc-server-js

Current Version grpc-server-js 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.
  • Server credentials for handling both secure and insecure calls.
  • gRPC Metadata.
  • gRPC logging.
  • No production dependencies.
  • 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
    • grpc.max_concurrent_streams
    • grpc.max_receive_message_length
    • grpc.max_send_message_length
    • All possible options and their descriptions are available here.
  • Supports the following gRPC environment variables:
    • GRPC_DEFAULT_SSL_ROOTS_FILE_PATH
    • GRPC_SSL_CIPHER_SUITES
    • GRPC_VERBOSITY
    • All possible environment variables 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.

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.