簡體   English   中英

如何在 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 ,您是否在像這樣添加啟動服務器之前加載了定義?

我為這種場景所做的是在一個原型文件中的自己的塊上定義不同的服務。

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);
   },
});

rest 之類的綁定、protoLoading、server.start() 保持不變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM