【问题标题】:Node.js gRPC Connection with tool proto fileNode.js gRPC 与工具 proto 文件的连接
【发布时间】:2020-04-27 14:26:20
【问题描述】:

我正在尝试使用在我的机器上运行的名为 Pachyderm 的工具创建 Node.js gRPC 连接。我为该工具生成了一个 .proto 文件,该文件将简单地显示该工具的版本。我已经为它生成了一个 server.js,但是,它没有通过连接到工具的相应 IP:port 来成功提取工具版本。

如果您能帮我解决这个问题,我将不胜感激。

.proto 文件

syntax = "proto3";

import "google/protobuf/empty.proto";

package versionpb;
option go_package = "github.com/pachyderm/pachyderm/src/client/version/versionpb";

message Version {
  uint32 major = 1;
  uint32 minor = 2;
  uint32 micro = 3;
  string additional = 4;
}

service API {
  rpc GetVersion(google.protobuf.Empty) returns (Version) {}
}

server.js

const path = require('path')

const protoLoader = require('@grpc/proto-loader')
const grpc = require('grpc')

const PROTO_PATH = path.resolve(__dirname, './protos/pach.proto')

const pd = protoLoader.loadSync(PROTO_PATH)
const hp = grpc.loadPackageDefinition(pd).pach

function sayHello (call, fn) {
  fn(null, { message: 'The tool version is ' + call.request.name })
}

function main () {
  const port = 30650
  const server = new grpc.Server()


  server.bind(`192.161.5.3:${port}`, grpc.ServerCredentials.createInsecure())
  server.start()
  console.log(`gRPC server started on port: ${port}`)
}

main()

【问题讨论】:

  • 当你运行服务器时,你得到你期望的日志行了吗?你的客户代码是什么?你到底经历了什么失败?

标签: node.js grpc


【解决方案1】:

加载包定义并启动服务器后,您需要将新服务添加到服务器。

// method name could be API, api or aPI dependes on how this was generated
server.addService(hp.versionpb.service, {api  : sayHello});
server.start();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 2020-08-24
    • 1970-01-01
    • 2021-01-27
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多