如何在 grpc-js 服务器中添加多个服务?

How to add multiple services in grpc-js server?

假设我有如下所示的 .proto 文件:

service SvcOne{
    rpc MehtodOne(RequestOne) returns (ResponseOne) {}
}

service SvcTwo{
    rpc MethodTwo(RequestTwo) returns (ResponseTwo) {}
}

message RequestOne {
    string field_req= 1;
}

message ResponseOne {
    string field_res = 1;
}

message RequestTwo {
    string field_req= 1;
}

message ResponseTwo {
    string field_res = 1;
}

然后我尝试如下代码:

const server = new grpc.Server();      
server.addService(protoSchema.SvcOne.service, {MehtodOne: MethodOne});
server.addService(protoSchema.SvcTwo.service, {MethodTwo: MethodTwo});
server.bindAsync(
    "0.0.0.0:50051",
    grpc.ServerCredentials.createInsecure(),
    (err) => {
      if (err) {
        console.log("Error!");
      } else {
        routeServer.start();
        console.log("Server ready...");
      }
    }
  );

但是出现了这样的错误:

TypeError: Cannot read property 'service' of undefined

所以我想我错过了介于两者之间的一些东西。

问题: 如何在 grpc-js 服务器中绑定多个服务(SvcOne 和 SvcTwo)?或者这在 grpc-js 中是不可能的?

请参考route_guide_server, did you load definition before add start server like this?

对于这种情况,我正在做的是在一个原型文件中的它自己的块上定义不同的服务。

package servicePackage;

service Service1 {
    rpc Get(Empty) returns (Empty);
    rpc Insert(Empty) returns (Empty);
    rpc Remove(Empty) returns (Empty);
    rpc Update(Empty) returns (Empty);
}

service Service2 {
    rpc Get(Empty) returns (Empty);
    rpc Insert(Empty) returns (Empty);
    rpc Remove(Empty) returns (Empty);
    rpc Update(Empty) returns (Empty);
}

然后在 addService 上只使用每个服务名称

server.addService(grpcPackage.Service1.service, {
   Insert: async (call, callback) => {
       callback(null, null);
   },
});

server.addService(grpcPackage.Service2.service, {
   Insert: async (call, callback) => {
       callback(null, null);
   },
});

其余的如绑定、protoLoading、server.start()保持不变。