複数の .proto ファイル間でどのサービスが呼び出されているかを理解しようと、リバース エンジニアリングを試みています。私の質問は、行われたすべての呼び出しを処理し、呼び出された関数とサービスの情報を提供するサービスをサーバーに実装できるかどうかです。
例:
プロトコル.プロト
syntax = "proto3";
package greating;
message PersonRequest {
string name = 1;
int32 age = 2;
}
message PersonResponse {
string message = 1;
}
service GreatingService {
rpc helloPerson (PersonRequest) returns (PersonResponse);
}
service WarningService {
rpc attentionPerson (PersonRequest) returns (PersonResponse);
}
サーバー.js
const packageDefinition = protoLoader.loadSync("greating.proto");
const greatingProto = grpc.loadPackageDefinition(packageDefinition);
var server = new grpc.Server();
server.addService(greatingProto.greating.GreatingService.service, {
helloPerson: function(call, callback) {
let response = `Hello ${call.request.name}! You're ${call.request.age} years old`;
return callback(null, { message: response });
}
});
server.addService(greatingProto.greating.WarningService.service, {
helloPerson: function(call, callback) {
let response = `Attention ${call.request.name}! You're ${call.request.age} years left to live`;
return callback(null, { message: response });
}
});
私がやりたいことは、両方の (すべての) 呼び出しを処理し、どのサービスが呼び出されたかを表示する 3 番目の関数を実装することです。このようなもの:
server.addService("*", {
function(call, callback) {
let response = `The service ${call.service}, function ${call.function} was called.`;
return callback(null, { message: response });
}
});
これを行う方法はありますか?
ありがとうございました。