» gRPC快速入门:Node.js » 3. 创建 proto 文件 » 3.2 从 proto 文件加载服务描述符

从 proto 文件加载服务描述符

Node.js 库会动态地从运行时加载的 .proto 文件中生成服务描述符和客户端 stub(存根)定义。

要加载 .proto 文件,只需 requite gRPC proto loader 库并使用其 loadSync() 方法,然后将输出传递给 gRPC 库的 loadPackageDefinition 方法:

var PROTO_PATH = __dirname + '/../../protos/route_guide.proto';
var grpc = require('@grpc/grpc-js');
var protoLoader = require('@grpc/proto-loader');
// 与现有 grpc.load 行为保持兼容相似的建议选项
var packageDefinition = protoLoader.loadSync(
    PROTO_PATH,
    {keepCase: true,
     longs: String,
     enums: String,
     defaults: true,
     oneofs: true
    });
var protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
// protoDescriptor 对象具有完整的包层次结构
var routeguide = protoDescriptor.routeguide;

完成后,存根构造函数在 routeguide 命名空间中(protoDescriptor.routeguide.RouteGuide),服务描述符(用于创建服务器)是存根的属性(protoDescriptor.routeguide.RouteGuide.service)。