1

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?

killjoy
  • 864
  • 17
  • 31

0 Answers0