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),仅供参考