Node.js gRPC 结构教程

Node.js gRPC 结构教程

1. 项目的目录结构及介绍

node-grpc-typescript/
├── src/
│   ├── client/
│   │   ├── client.ts
│   │   └── ...
│   ├── server/
│   │   ├── server.ts
│   │   └── ...
│   ├── proto/
│   │   ├── service.proto
│   │   └── ...
│   ├── utils/
│   │   ├── logger.ts
│   │   └── ...
│   ├── config/
│   │   ├── config.ts
│   │   └── ...
│   └── index.ts
├── dist/
│   ├── client/
│   │   ├── client.js
│   │   └── ...
│   ├── server/
│   │   ├── server.js
│   │   └── ...
│   └── index.js
├── package.json
├── tsconfig.json
└── README.md
  • src/:源代码目录,包含客户端、服务端、协议缓冲区文件、工具函数和配置文件。
  • dist/:编译后的 JavaScript 文件目录。
  • package.json:项目依赖和脚本配置文件。
  • tsconfig.json:TypeScript 编译配置文件。
  • README.md:项目说明文档。

2. 项目的启动文件介绍

服务端启动文件

src/server/server.ts 是服务端的启动文件,负责启动 gRPC 服务并监听指定端口。

import { Server, ServerCredentials } from '@grpc/grpc-js';
import { MyServiceService } from '../proto/service_grpc_pb';
import { MyServiceImpl } from './serviceImpl';

const server = new Server();
server.addService(MyServiceService, new MyServiceImpl());
server.bindAsync('0.0.0.0:50051', ServerCredentials.createInsecure(), (err, port) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(`Server listening on port ${port}`);
  server.start();
});

客户端启动文件

src/client/client.ts 是客户端的启动文件,负责与服务端进行通信。

import { credentials } from '@grpc/grpc-js';
import { MyServiceClient } from '../proto/service_grpc_pb';
import { Request } from '../proto/service_pb';

const client = new MyServiceClient('localhost:50051', credentials.createInsecure());
const request = new Request();
request.setId(1);

client.getAddress(request, (err, response) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(response.getAddress());
});

3. 项目的配置文件介绍

src/config/config.ts 是项目的配置文件,包含服务端和客户端的配置信息。

export const config = {
  server: {
    port: 50051,
  },
  client: {
    host: 'localhost',
    port: 50051,
  },
};

这个配置文件定义了服务端的监听端口和客户端连接的主机和端口。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值