grpc-js-reflection-client
Version:
Package use Grpc reflection api to download grpc proto descriptor. Now you don't have to add proto file to each package. Simple direct download proto package from example microservice without any files.
40 lines (34 loc) • 1.2 kB
JavaScript
const grpc = require('@grpc/grpc-js');
const { ReflectionService } = require('@grpc/reflection');
const protoLoader = require('@grpc/proto-loader');
const def_options = {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true
};
const packageDefinition = protoLoader.loadSync(
__dirname + '../../../tests/protos/addressbook.proto', // https://raw.githubusercontent.com/gawsoftpl/grpc-js-reflection-api-client/main/tests/protos/addressbook.proto
def_options
);
const addressbook = grpc.loadPackageDefinition(packageDefinition)
// This wraps the instance of gRPC server with the Server Reflection service and returns it.
const server = new grpc.Server();
const reflection = new ReflectionService(packageDefinition);
reflection.addToServer(server);
server.addService(
//@ts-ignore
addressbook.addressbook.AddressesService.service, {
Add: (_, callback) => {
callback(null, {
success: true,
id: "123"
});
}
}
)
server.bindAsync("127.0.0.1:3000", grpc.ServerCredentials.createInsecure(),() => {
server.start();
console.log("Server started on port 3000");
});