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.
48 lines (38 loc) • 1.35 kB
text/typescript
//import { GrpcReflection } from 'grpc-js-reflection-client';
import { GrpcReflection } from '../src/GrpcReflection';
import * as grpc from '@grpc/grpc-js';
/**
* Get proto descriptor from reflection grpc api and get in @grpc/grpc-js format
*
* */
try {
(async () => {
const client = new GrpcReflection('0.0.0.0:3000', grpc.credentials.createInsecure());
// Find protobufjs descriptor by symbol in grpc reflection server
const descriptor = await client.getDescriptorBySymbol('apidata');
// Get @grpc/grpc-js package object
const packageObject = descriptor.getPackageObject({
keepCase: true,
enums: String,
longs: String
});
// Connect with service packageObject.<packageName>.<serviceName>
//@ts-ignore
var proto = new packageObject.apidata.ApiKeyService(
'0.0.0.0:3000',
grpc.credentials.createInsecure()
);
// Optional add metadata do query
var metadata = new grpc.Metadata();
metadata.add('authorization', "abc");
// Execute rpc command
proto.Add({"user_id":"A"}, metadata, (d)=>{
console.log(d);
});
proto.Add({"user_id":"A"}, metadata, (d)=>{
console.log(d);
});
})();
}catch(e){
console.log(e);
}