gRPC实现跨语言调用--node.js/go(二)

使用node.js语言编写Client,然后向使用go语言编写的server发送RPC请求

安装依赖

cnpm i grpc
cnpm install --save grpc-tools

编写Node.js版Client(无编译成js文件)

var grpc = require('grpc');
//加载之前编写好的proto文件
var protoDescriptor = grpc.load(__direname+"/pb/helloworld.proto");
var pb = protoDescriptor.pb;//pb为proto文件的包名

function getClient(){
    let client = new pb.HelloWorld('localhost:8973', grpc.credentials.createInsecure()); //连接服务器,HelloWorld字段为编写的proto文件的server名
    return client ;
}

function main(){
    let client = getClient();
   client.SayHello({name:"world"},function(err,response){   //使用go的SayHello方法,传入name参数,以及回调函数
       console.log("Hey!",response.message)
   })

}

main()

将上面的代码保存执行,得到输出结果如下:

node node_client.js
Hey! Hello world

编写Node.js版Client(编译成js文件)

./node_modules/grpc-tools/bin/protoc --js_out=import_style=commonjs,binary:./ --plugin=protoc-gen-grpc=./node_modules/grpc-tools/bin/grpc_node_plugin.exe --grpc_out=./ helloworld.proto

运行后会生成两个js文件

helloworld_grpc_pb.js 
helloworld_pb.js

然后就是编写client文件,如下

var grpc = require('grpc');
var messages = require('./HelloWorldService_pb.js');
var services = require('./HelloWorldService_grpc_pb.js')
var request = new messages.HelloRequest();
request.setName('world');
var client = new services.helloworldClient(
  'localhost:50051',
  grpc.credentials.createInsecure()
);
client.SayHello(request, function(err,data){
  if(err){
    console.error(err);
  }
  console.log(data);
})

over!这就实现了使用node.js代码编写的client去调用Go语言版本的server了

你可能感兴趣的:(grpc)