美文网首页
Node.js快速搭建gRPC测试环境

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

作者: 许文同学 | 来源:发表于2018-05-15 20:01 被阅读0次

    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测试环境

          本文链接:https://www.haomeiwen.com/subject/ztvydftx.html