Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@loopback/grpc

Package Overview
Dependencies
Maintainers
8
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@loopback/grpc

A gRPC extension for LoopBack Next

  • 0.2.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
8
Created
Source

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

FAQs

Package last updated on 19 Jun 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc