📜  express grpc 示例 - Javascript (1)

📅  最后修改于: 2023-12-03 15:00:40.181000             🧑  作者: Mango

Express gRPC 示例 - JavaScript

本文介绍了如何使用 Express 和 gRPC 框架搭建一个 JavaScript 路由器服务。我们将首先安装必要的软件包,并创建一个 gRPC 服务器。然后,我们将使用 Express 框架来创建一个路由服务,并为该服务设置 gRPC 客户端。

安装
  • Node.js v14 或更高版本。

首先,我们需要安装必要的软件包:

npm install --save grpc @grpc/proto-loader express
  • grpc:gRPC 框架
  • @grpc/proto-loader: 用于加载 gRPC 协议文件的软件包
  • express:用于创建路由服务的框架
创建 gRPC 服务器

我们将首先创建一个 server.js 文件来启动 gRPC 服务器。

const grpc = require('grpc');
const protoLoader = require('@grpc/proto-loader');
const packageDefinition = protoLoader.loadSync('path/to/your/protoFile.proto', {
  keepCase: true,
  longs: String,
  enums: String,
  defaults: true,
  oneofs: true
});
const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
const helloProto = protoDescriptor.hello;

function main() {
  const server = new grpc.Server();
  server.addService(helloProto.Greeter.service, {
    sayHello: sayHello
  });
  server.bindAsync('localhost:50051', grpc.ServerCredentials.createInsecure(), () => {
    server.start();
  });
}

function sayHello(call, callback) {
  const name = call.request.name;
  const message = `Hello ${name}!`;
  callback(null, { message });
}

main();

上述代码中,我们加载了一个名为 hello 的 gRPC 协议文件。然后,我们使用 grpc.loadPackageDefinition() 方法来加载协议文件并生成协议描述。接着,我们创建了一个 gRPC 服务器,并为其绑定了一个服务,该服务使用我们在协议文件中定义的 Greeter 服务。最后,我们将服务器绑定到 localhost:50051 上,使用 grpc.ServerCredentials.createInsecure() 来创建不安全的凭据和 server.start() 来启动服务器。

创建 Express 路由服务

接下来,我们将使用 Express 框架来创建一个路由服务,并使其使用 gRPC 客户端来调用我们的 gRPC 服务器。

const grpc = require('grpc');
const protoLoader = require('@grpc/proto-loader');
const packageDefinition = protoLoader.loadSync('path/to/your/protoFile.proto', {
  keepCase: true,
  longs: String,
  enums: String,
  defaults: true,
  oneofs: true
});
const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
const helloProto = protoDescriptor.hello;

const express = require('express');
const app = express();

app.get('/hello/:name', (req, res) => {
  const client = new helloProto.Greeter('localhost:50051', grpc.credentials.createInsecure());
  client.sayHello({ name: req.params.name }, (err, response) => {
    if (err) {
      console.error(err);
      res.status(500).send(err);
    } else {
      res.send(response.message);
    }
  });
});

app.listen(3000, () => {
  console.log('Example app listening on port 3000!');
});

上述代码中,我们首先加载了 gRPC 协议文件,并创建了 gRPC 客户端。然后,我们创建了一个 Express 路由服务,该服务使用 app.get() 方法来定义 /hello/:name 路径的处理程序。在处理程序中,我们使用创建的 gRPC 客户端来调用 sayHello() 方法,并通过回调函数使用服务器响应来响应客户端。

成功

现在,您已经学会了如何使用 Express 和 gRPC 框架搭建一个 JavaScript 路由器服务。只需按照上述说明操作,即可轻松创建路由器服务并与 gRPC 服务器进行通信!

参考资料