Node.js의 GRPC를 더 간단하게

11560 단어 javascriptgrpcnode
Node.js에서 GRPC 애플리케이션을 개발할 때 grpc @grpc/proto-loader 을 사용할 수 있습니다. 이 멋진 패키지는 GRPC 서버와 클라이언트를 구축하기 위한 통합 API를 제공하지만 애플리케이션 코드에서 직접 사용하기에는 너무 원시적입니다. createServercreateClient 와 같은 보다 단순화된 API를 원합니다.

그래서 개발중입니다grpc-kit . grpc@grpc/proto-loader 의 작은 래퍼 라이브러리입니다. 물론 createServercreateClient를 제공합니다 😆

아래에 예시를 보여줍니다.

인사.proto

syntax="proto3";

package greeter;

service Greeter {
  rpc Hello (RequestGreet) returns (ResponseGreet) {}
  rpc Goodbye (RequestGreet) returns (ResponseGreet) {}
}

message RequestGreet {
  string name = 1;
}

message ResponseGreet {
  string message = 1;
}

서버.js

const {createServer} = require("grpc-kit");
const server = createServer();

server.use({
  protoPath: "/path/to/greeter.proto",
  packageName: "greeter",
  serviceName: "Greeter",
  routes: {
    hello: (call, callback) => {
      callback(null, { message: `Hello, ${call.request.name}` });
    },
    goodbye: async (call) => {
      return { message: `Goodbye, ${call.request.name}` };
    }
  }
});

server.listen("0.0.0.0:50051");
createServergrpc.Server의 래퍼 클래스 인스턴스를 반환합니다. 클래스는 제공할 서비스를 추가하기 위한 메소드를 제공합니다use. 라우팅 맵을 사용하여 선언적으로 서비스를 구성할 수 있습니다. 라우팅 맵은 greeter.proto에 선언된 메서드 쌍과 핸들러 함수(동기화/비동기 함수 모두 사용 가능 😎)로 구성됩니다. 서비스가 구성된 후 listen 방식으로 서버를 시작합니다.

client.js

//client.js
const {createClient} = require("grpc-kit");
const client = createClient({
  protoPath: "/path/to/greeter.proto",
  packageName: "greeter",
  serviceName: "Greeter"
}, "0.0.0.0:50051");

client.hello({ name: "Jack" }, (err, response) => {
  if(err) throw err;
  console.log(response.message);
});

client.goodbye({ name: "John" }, (err, response) => {
  if(err) throw err;
  console.log(response.message);
});
createClientgrpc.Client의 인스턴스를 반환합니다. greeter.proto에 선언된 메서드를 호출하고 콜백에서 응답을 받습니다.

API에 대한 자세한 내용은 repository을 참조하십시오. 도서관은 현재 개발 중입니다. 모든 의견과 조언을 환영합니다. 고맙습니다!


YoshiyukiKato / grpc-kit


Node.js에서 grpc를 더 간단하게 사용





grpc 키트



Node.js에서 grpc를 더 간단하게 사용하세요.

빠른 시작


설치

$ npm install grpc @grpc/proto-loader grpc-kit

프로토

syntax="proto3"
package greeter
service Greeter {
  rpc Hello (RequestGreet) returns (ResponseGreet) {}
  rpc Goodbye (RequestGreet) returns (ResponseGreet) {}
}
message RequestGreet {
  string name = 1;
}

message ResponseGreet {
  string message = 1;
}

섬기는 사람


const {createServer} = require("grpc-kit")
const server = createServer();

server.use({
  protoPath: "/path/to/greeter.proto",
  packageName: "greeter",
  serviceName: "Greeter",
  routes: {
    hello: (call, callback) => {
      callback(null, { message: `Hello, ${call.request.name}` });
    },
    goodbye: async (call) => {
      return { message: `Goodbye, ${call.request.name}`


View on GitHub

좋은 웹페이지 즐겨찾기