Protocol buffers 如何定义处理任何呼叫的gRPC服务?

Protocol buffers 如何定义处理任何呼叫的gRPC服务?,protocol-buffers,grpc,protobuf.js,grpc-node,grpc-web,Protocol Buffers,Grpc,Protobuf.js,Grpc Node,Grpc Web,我正在做一些反向工程,试图了解在几个.proto文件中调用了哪些服务。我的问题是,是否可以在服务器上实现一个服务,该服务处理所有调用,并向我提供调用哪个函数和服务的信息 例子: 协议协议 syntax=“proto3”; 包装变灰; 消息个人请求{ 字符串名称=1; int32年龄=2岁; } 消息人响应{ 字符串消息=1; } 服务质量服务{ rpc helloPerson(PersonRequest)返回(PersonResponse); } 服务警告服务{ rpc attentionPe

我正在做一些反向工程,试图了解在几个.proto文件中调用了哪些服务。我的问题是,是否可以在服务器上实现一个服务,该服务处理所有调用,并向我提供调用哪个函数和服务的信息

例子: 协议协议

syntax=“proto3”;
包装变灰;
消息个人请求{
字符串名称=1;
int32年龄=2岁;
}
消息人响应{
字符串消息=1;
}
服务质量服务{
rpc helloPerson(PersonRequest)返回(PersonResponse);
} 
服务警告服务{
rpc attentionPerson(PersonRequest)返回(PersonResponse);
}

server.js

const packageDefinition=protoLoader.loadSync(“greating.proto”);
const greatingProto=grpc.loadPackageDefinition(packageDefinition);
var server=new grpc.server();
server.addService(greatingProto.greating.GreatingService.service{
helloPerson:函数(调用、回调){
让response=`Hello${call.request.name}!您是${call.request.age}岁`;
返回回调(null,{message:response});
}
});
server.addService(greatingProto.greating.WarningService.service{
helloPerson:函数(调用、回调){
让response=`Attention${call.request.name}!您还有${call.request.age}年的生命`;
返回回调(null,{message:response});
}
});

我想做的是实现第三个函数,它处理两个(所有)调用,并显示调用了哪个服务。大概是这样的:

server.addService(“*”{
函数(调用、回调){
let response=`调用了服务${call.service},函数${call.function}'。`;
返回回调(null,{message:response});
}
});
有办法做到这一点吗


谢谢。

不,grpc不支持通配符方法处理程序,也不支持使用单个处理程序处理每个传入请求的任何其他方式。

我认为这不会影响您的问题,但在处理
警告服务的代码中,您传递的是名为
helloPerson
的函数,而不是
attentionPerson
。我相信,如果您运行该代码,您应该会看到一条警告,即未提供针对
attentionPerson
的实现。您是正确的。那是一个复制粘贴错误。比你强。