Node.js gRPC Library
Status
Alpha : Ready for early adopters
PREREQUISITES
node: This requiresnodeto be installed. If you instead have thenodejsexecutable on Debian, you should install thenodejs-legacypackage.- homebrew on Mac OS X. These simplify the installation of the gRPC C core.
INSTALLATION
Linux (Debian):
Add Debian testing to your sources.list file. Example:
echo "deb http://ftp.us.debian.org/debian testing main contrib non-free" | \
sudo tee -a /etc/apt/sources.listInstall the gRPC Debian package
sudo apt-get update
sudo apt-get install libgrpc-devInstall the gRPC NPM package
npm install grpcMac OS X
Install homebrew. Run the following command to install gRPC Node.js.
$ curl -fsSL https://goo.gl/getgrpc | bash -s nodejsThis will download and run the gRPC install script, then install the latest version of gRPC Nodejs npm package.
BUILD FROM SOURCE
- Clone the grpc Git Repository.
- Follow the instructions in the
INSTALLfile in the root of that repository to install the C core library that this package depends on. - Run
npm install.
If you install the gRPC C core library in a custom location, then you need to set some environment variables to install this library. The command will look like this:
CXXFLAGS=-I<custom location>/include LDFLAGS=-L<custom location>/lib npm install [grpc]TESTING
To run the test suite, simply run npm test in the install location.
API
This library internally uses ProtoBuf.js, and some structures it exports match those exported by that library
If you require this module, you will get an object with the following members
function load(filename)Takes a filename of a Protocol Buffer file, and returns an object representing the structure of the protocol buffer in the following way:
- Namespaces become maps from the names of their direct members to those member objects
- Service definitions become client constructors for clients for that service. They also have a
servicemember that can be used for constructing servers. - Message definitions become Message constructors like those that ProtoBuf.js would create
- Enum definitions become Enum objects like those that ProtoBuf.js would create
- Anything else becomes the relevant reflection object that ProtoBuf.js would create
function loadObject(reflectionObject)Returns the same structure that load returns, but takes a reflection object from ProtoBuf.js instead of a file name.
function Server([serverOpions])Constructs a server to which service/implementation pairs can be added.
statusAn object mapping status names to status code numbers.
callErrorAn object mapping call error names to codes. This is primarily useful for tracking down certain kinds of internal errors.
CredentialsAn object with factory methods for creating credential objects for clients.
ServerCredentialsAn object with factory methods for creating credential objects for servers.