Using .net core 3.1 on windows 10. Created sample GrpcGreeter server and GrpcGreeterClient applications. From GrpcGreeterClient app, I can successfully call Greeter
service.
greet.proto
syntax = "proto3";
option csharp_namespace = "GrpcGreeterClient";
package greet;
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
client code;
static async Task Main(string[] args)
{
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
So far so good. However, when I try to call this same gRpc service from nodejs receved an error.
client proto file used in nodejs;
syntax = "proto3";
package greet;
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
nodejs code in typescript;
let PROTO_PATH = path.resolve(__dirname, "../../proto/Greet.proto");
let packageDefinition = protoLoader.loadSync(PROTO_PATH);
const grpcObj = grpc.loadPackageDefinition(
packageDefinition
) as unknown as ProtoGrpcType;
const enmPackage = grpcObj.greet;
let client = new enmPackage.Greeter(
"localhost:5001",
grpc.credentials.createInsecure()
);
client.SayHello(
{
name: "Joe",
},
(err, reply) => {
if (err) {
console.error(err);
} else {
console.log(reply);
}
}
);
When I call client.SayHello
, I received Error: 14 UNAVAILABLE: Connection dropped
What am I missing? Should I add any option in proto file?