Skip to content
gRPC Extension for LoopBack 4
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
compilers Implemented TypeScript autogenerated interfaces (#17) Nov 26, 2017
fixtures
src chore: upgrade to latest LB4 modules Mar 11, 2019
.gitignore chore: drop node 6 and upgrade deps Feb 4, 2018
.mocharc.json chore: upgrade to latest LB4 modules Mar 11, 2019
.npmrc chore: upgrade to latest LB4 modules Mar 11, 2019
.prettierignore Implemented TypeScript autogenerated interfaces (#17) Nov 26, 2017
.prettierrc Setup starter, ci and implemented server provider. (#8) Nov 3, 2017
.travis.yml Chore: fix type argument error (#30) Jun 22, 2018
CHANGES.md 1.0.0-alpha.2 Feb 7, 2018
CODEOWNERS
DEVELOPING.md Setup starter, ci and implemented server provider. (#8) Nov 3, 2017
LICENSE Fix module name in LICENSE Nov 11, 2017
README.md fix: do app config outside constructor (#29) Feb 9, 2018
appveyor.yml Drop Node.js 6 support (#26) Feb 7, 2018
docs.json
index.d.ts Implemented TypeScript autogenerated interfaces (#17) Nov 26, 2017
index.js chore: upgrade to latest LB4 modules Mar 11, 2019
index.ts chore: upgrade to latest LB4 modules Mar 11, 2019
package-lock.json chore: upgrade to latest LB4 modules Mar 11, 2019
package.json
tsconfig.build.json chore: upgrade to latest LB4 modules Mar 11, 2019
tsconfig.json
tslint.build.json
tslint.json

README.md

gRPC Extension for LoopBack 4

Join the chat at https://gitter.im/strongloop/loopback4-extension-grpc

Overview

The @loopback/grpc component enables LoopBack 4 as a gRPC Server. Also it provides with a gRPC decorator to define your RPC Method implementations from your Application Controllers.

Installation

Install the @loopback/grpc component in your LoopBack 4 Application.

$ npm install --save @loopback/grpc

Component Configuration

import {Application} from '@loopback/core';
import {GrpcComponent, Config} from '@loopback/grpc';
import {GreeterCtrl} from './controllers/greeter/greeter.ctrl';
// Grpc Configurations are optional.
const config: Config.Component = {
  /* Optional Configs */
};
// Pass the optional configurations
const app = new Application({
  grpc: config,
});
// Add Grpc as Component
app.component(GrpcComponent);
// Bind GreeterCtrl to the LoopBack Application
app.controller(GreeterCtrl);
// Start App
app.start();

Grpc auto-generated code

The @loopback/grpc extension provides you with auto-generated interfaces and configurations for strict development.

The extension will automatically look for proto files within your project structure, creating the corresponding typescript interfaces.

Example:

- app
| - controllers
| | - greeter
| | | - greeter.proto
| | | - greeter.ctrl.ts

Once you start your app for first time it will automatically create your typescript interfaces from the greeter.proto file.

- app
| - controllers
| | - greeter
| | | - greeter.proto
| | | - greeter.proto.ts <--- Auto-generated
| | | - greeter.ctrl.ts

Once your interfaces and configurations are created, you can start building your controller logic.

Grpc Controller

The @loopback/grpc component provides you with a handy decorator to implement GRPC Methods within your LoopBack controllers.

app/controllers/greeter/greeter.ctrl.ts

import {grpc} from '@loopback/grpc';
import {Greeter, HelloRequest, HelloReply} from '/greeter.proto';
/**
 * @class GreeterCtrl
 * @description Implements grpc proto service
 **/
export class GreeterCtrl implements Greeter.Service {
    // Tell LoopBack that this is a Service RPC implementation
    @grpc(Greeter.SayHello)
    sayHello(request: HelloRequest): HelloReply {
        return {message: 'Hello ' + request.name};
    }
}

Proto Example

app/controllers/greeter/greeter.proto

syntax = "proto3";
package greeterpackage;

service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

Contribute

Get started by either downloading this project or cloning it as follows:

$ git clone https://github.com/strongloop/loopback4-extension-grpc.git
$ cd loopback4-extension-grpc && npm install

Contributions

Tests

run npm test from the root folder.

Todo

  • Watch for proto changes.
  • Server/Client Streams

Contributors

See all contributors.

License

MIT

You can’t perform that action at this time.