Node.js快速搭建gRPC测试环境

Node.js可以无需预编译proto文件,直接启动gRPC服务与客户端。用来做测试非常方便。
下面是三个主要的文件

  • package.json (安装依赖不用多说)
{
  "name": "grpc-examples",
  "version": "0.1.0",
  "dependencies": {
    "async": "^1.5.2",
    "google-protobuf": "^3.0.0",
    "grpc": "^1.0.0",
    "lodash": "^4.6.1",
    "minimist": "^1.2.0"
  }
}
  • server.js
// 定义proto接口描述文件路径
var PROTO_PATH = __dirname + '/proto/helloworld.proto';
// 加载grpc模块
var grpc = require('grpc');
// 加载proto文件中helloworld包的配置
var hello_proto = grpc.load(PROTO_PATH).helloworld;
// 定义sayHello方法
function sayHello(call, callback) {
  callback(null, {message: 'Node.js: ' + call.request.name});
}
// 主函数
function main() {
  // 实例grpc服务
  var server = new grpc.Server();
  // 注册Greeter服务到grpc服务,并定义接口对应方法
  server.addService(hello_proto.Greeter.service, {sayHello: sayHello});
  // 绑定地址,并传入证书(这里是忽略验证)
  server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
 // 启动服务
  server.start();
}

main();
  • client.js
// proto文件路径
var PROTO_PATH = __dirname + '/proto/helloworld.proto';
var test_PATH = __dirname + '/proto/test.proto';
// 加载grpc模块
var grpc = require('grpc');
// 加载包配置
var hello_proto = grpc.load(PROTO_PATH).helloworld;
var test_proto = grpc.load(test_PATH).test;
// 主函数
function main() {
   // 创建2个客户端
  var client = new hello_proto.Greeter('localhost:8028',grpc.credentials.createInsecure());
  var test = new test_proto.Waiter('127.0.0.1:8028',grpc.credentials.createInsecure());
  // 定义请求参数 使用附带参数如果有 如: node client.js 123
  var user;
  if (process.argv.length >= 3) {
    user = process.argv[2];
  } else {
    user = 'world';
  }
  // 调用接口方法
  client.sayHello({name: user}, function(err, response) {
    console.log('sayHello服务端返回: ', response.message);
  });
  // 调用接口方法
  test.DoMax({ReqStr: user}, function(err, response) {
    console.log('DoMax服务端返回: ', response.ResStr);
  })
}

main();

你可能感兴趣的:(Node.js快速搭建gRPC测试环境)