Skip to content

Latest commit

 

History

History
131 lines (103 loc) · 2.22 KB

README.md

File metadata and controls

131 lines (103 loc) · 2.22 KB

A wrapper of @grpc/grpc-js for Node.JS.

Install

npm install --save @grpc.ts/core

# or

yarn add @grpc.ts/core

# or

pnpm add @grpc.ts/core

Usage

Define proto file

// example.proto

syntax = "proto3";

import "google/protobuf/timestamp.proto";

package example.v1;

message Message {
  string message = 1;
  google.protobuf.Timestamp created_at = 2;
}

message SendMessageRequest {
  string message = 1;
  google.protobuf.Timestamp created_at = 2;
}

message GetMessageResponse { Message message = 1; }

service ExampleService {
  rpc SendMessage(SendMessageRequest) returns (GetMessageResponse);
}

Client Usage

import { createClient } from '@grpc.ts/core';

async function main(): Promise<void> {
  const client = await createClient({
    url: 'localhost:3010',
    package: [
      {
        packageName: 'example.v1',
        protoPath: '../proto/example.proto',
      },
    ],
    packageDefinitionOptions: {
      oneofs: true,
      longs: String,
      enums: String,
      defaults: true,
    },
    options: {
      keepaliveTimeMs: 5_000,
    },
  });

  client.getService('ExampleService').sendMessage(
    { message: 'hello', createdAt: dateToGrpcTimestamp(new Date()) },
    createMetadata({
      meta: 'test',
    }),
  );
}

main();

Server Usage

import { createServer, dateToGrpcTimestamp } from '@grpc.ts/core';

async function main(): Promise<void> {
  const serverObj = await createServer({
    url: 'localhost:3010',
    package: [
      {
        packageName: 'example.v1',
        protoPath: '../proto/example.proto',
      },
    ],
    packageDefinitionOptions: {
      oneofs: true,
      longs: String,
      enums: String,
      defaults: true,
    },
    options: {
      keepaliveTimeMs: 5_000,
    },
  });

  serverObj.addUnaryHandler(
    'ExampleService',
    'sendMessage',
    (request, metadata) => {
      console.log(request);
      console.log(metadata);
      return {
        message: {
          message: 'hola',
          createdAt: dateToGrpcTimestamp(new Date()),
        },
      };
    },
  );
}

main();

TODO

  • Support Server Streaming Call
  • Support Client Streaming Call
  • Support Bidi Streaming Call