NodeJS GRPC简单的示例详解

 更新时间:2024年10月16日 09:38:04   作者:田猿笔记  
本文介绍了如何使用NodeJS GRPC,包括.proto文件的定义、客户端和服务器的实现,首先,创建.proto文件定义服务和消息,然后实现客户端greeter_client.js文件,最后运行服务器和客户端,通过这篇文章,你可以快速掌握NodeJS GRPC的基础使用方法

1. 定义 .proto 文件

首先,创建一个 .proto 文件,定义服务和消息:

syntax = "proto3";
package helloworld;
service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
  rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}
}
message HelloRequest {
  string name = 1;
}
message HelloReply {
  string message = 1;
}
### 2. 实现服务器
创建 `greeter_server.js` 文件,包含服务的实现:
```javascript
const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');
const packageDefinition = protoLoader.loadSync('helloworld.proto', {
  keepCase: true,
  longs: String,
  enums: String,
  defaults: true,
  oneofs: true
});
const helloProto = grpc.loadPackageDefinition(packageDefinition).helloworld;
function sayHello(call, callback) {
  callback(null, { message: 'Hello ' + call.request.name });
}
function sayHelloAgain(call, callback) {
  callback(null, { message: 'Hello again, ' + call.request.name });
}
function main() {
  const server = new grpc.Server();
  server.addService(helloProto.Greeter.service, { sayHello: sayHello, sayHelloAgain: sayHelloAgain });
  server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), () => {
    server.start();
  });
}
main();

3. 实现客户端

创建 greeter_client.js 文件,包含客户端的实现:

const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');
const packageDefinition = protoLoader.loadSync('helloworld.proto', {
  keepCase: true,
  longs: String,
  enums: String,
  defaults: true,
  oneofs: true
});
const helloProto = grpc.loadPackageDefinition(packageDefinition).helloworld;
function main() {
  const client = new helloProto.Greeter('localhost:50051', grpc.credentials.createInsecure());
  client.sayHello({ name: 'World' }, (err, response) => {
    if (err) console.error(err);
    else console.log('Greeting:', response.message);
  });
  client.sayHelloAgain({ name: 'World' }, (err, response) => {
    if (err) console.error(err);
    else console.log('Greeting:', response.message);
  });
}
main();

4. 运行服务器和客户端

确保你已经安装了所有必要的依赖:

npm install @grpc/grpc-js @grpc/proto-loader

然后,分别运行服务器和客户端:

node greeter_server.js
node greeter_client.js

到此这篇关于NodeJS GRPC简单的例子的文章就介绍到这了,更多相关NodeJS GRPC例子内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • nodejs简单抓包工具使用详解

    nodejs简单抓包工具使用详解

    这篇文章主要介绍了nodejs简单抓包工具使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • nodejs切换版本使用最新教程(不需要卸载重装)

    nodejs切换版本使用最新教程(不需要卸载重装)

    有时候需要运行不同的项目,node版本不一致会导致不少问题,特别是最新版本对应的一些插件,由于语法等原因导致不一定兼容低版本,这样运行低版本环境的项目的时候很多坑,这篇文章主要给大家介绍了关于nodejs切换版本使用(不需要卸载重装)的相关资料,需要的朋友可以参考下
    2022-11-11
  • node.js中的querystring.unescape方法使用说明

    node.js中的querystring.unescape方法使用说明

    这篇文章主要介绍了node.js中的querystring.unescape方法使用说明,本文介绍了querystring.unescape的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • 10个Node.js库帮助你优化代码和简化开发

    10个Node.js库帮助你优化代码和简化开发

    这篇文章主要介绍了10个Node.js库帮助你优化代码和简化开发,其中包括处理数组、对象、字符串库Lodash,缓存数据处理库Node-cache,解析、操作和格式化日期和时间库Moment.js,Redis操作库,发送电子邮件库Nodemailer
    2023-05-05
  • Node.js的中间件及使用方法详解

    Node.js的中间件及使用方法详解

    在Node.js的生态中,中间件(Middleware)是一个不可或缺的概念,它为构建灵活而高效的应用程序提供了强大的支持,下面给大家介绍Node.js的中间件及使用方法,感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • Node.js中的HTTP请求与响应详解

    Node.js中的HTTP请求与响应详解

    本文详细讲解了Node.js中的HTTP请求与响应,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • node.js如何操作MySQL数据库

    node.js如何操作MySQL数据库

    这篇文章主要介绍了node.js如何操作MySQL数据库,帮助大家更好的进行web开发,感兴趣的朋友可以了解下
    2020-10-10
  • 使用node.JS中的url模块解析URL信息

    使用node.JS中的url模块解析URL信息

    本文将详细介绍nodeJS中的URL模块的使用方法,利用URL模块解析出URL相关信息
    2020-02-02
  • 切换到淘宝最新npm镜像源的全面指南(支持 Windows、macOS 和多种 Linux 发行版)

    切换到淘宝最新npm镜像源的全面指南(支持 Windows、macOS 和多种 Linux

    在开发过程中,npm 是前端开发者不可或缺的工具,但对于国内的开发者来说,npm 官方源在下载速度上存在一定的瓶颈,本文将详细介绍如何在 Windows、macOS 以及各类 Linux 发行版上切换到淘宝的 npm 镜像源,需要的朋友可以参考下
    2025-03-03
  • Express框架定制路由实例分析

    Express框架定制路由实例分析

    这篇文章主要介绍了Express定制路由,结合实例形式分析了express框架定制路由原理、用法及相关注意事项,需要的朋友可以参考下
    2023-05-05

最新评论