Thanks for sharing the details. I am using the same Nodejs server & client. Let me try this client configuration.
const gRPCPort = config.GRPC_SERVER_PORT;
const options: protoLoader.Options = {
keepCase: true,
longs: String,
enums: String,
defaults: true,
arrays: true,
oneofs: true,
};
const PROTO_FILE = '../proto/xyz.service.proto';
const packageDef = protoLoader.loadSync(
path.resolve(__dirname, PROTO_FILE),
options,
);
const proto = loadPackageDefinition(packageDef) as unknown as ProtoGrpcType;
const server = new Server();
// XYZ Services
server.addService(proto.xyz.xyzService.service, {
GetABC: (req, res) => getABCHandler(req, res),
} as XyzServiceHandlers);
server.bindAsync(
`0.0.0.0:${gRPCPort}`,
ServerCredentials.createInsecure(),
(err, port) => {
if (err) {
throw err;
}
console.log(`gRPC server listening on ${port}`);
server.start();
},
);
// Client.ts
const gRPCPort = config.GRPC_SERVER_PORT;
export const client = new proto.xyz.xyzService(
`0.0.0.0:${gRPCPort}`,
credentials.createInsecure()
);
const deadline = new Date();
deadline.setSeconds(deadline.getSeconds() + 1);
client.waitForReady(deadline, (err) => {
if (err) {
console.error(err);
return;
}
onClientReady();
});
function onClientReady() {
console.log("? gRPC Client is ready");
}