使用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了