前端调用grpc

前端调用grpc
cgd在 nodejs 中使用 grpc 编写接口
1. 创建一个 user.proto 文件
1 | syntax = "proto3"; |
2. 安装相关依赖
1 | npm i @grpc/grpc-js google-protobuf grpc-tools grpc_tools_node_protoc_ts |
3. 生成 user_pb.js 和 user_grpc_pb.js 文件
1 | grpc_tools_node_protoc --js_out=import_style=commonjs,binary:./ --grpc_out=./ --plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin` ./src/user.proto |
4. 生成 user_pb.d.ts 和 user_grpc_pb.d.ts 文件
1 | grpc_tools_node_protoc --plugin=protoc-gen-ts=`which protoc-gen-ts` --ts_out=./src --proto_path=./src ./src/user.proto |
5.编写 server.ts
1 | import * as grpc from "@grpc/grpc-js"; |
6.编写 client.ts
1 | import * as grpc from "@grpc/grpc-js"; |
在 React 中调用 grpc 接口
1.在服务器端安装 envoy 开启反向代理
1.1 打开 envoy.yaml 配置文件
1 | sudo nano /etc/envoy/envoy.yaml |
1.2 编写 envoy.yaml 配置文件
1 | static_resources: |
1.3 开启 envoy 服务
1 | sudo envoy -c /etc/envoy/envoy.yaml |
2.在 react 中引入 proto 文件并生成相关代码
2.1 生成 user_grpc_web_pb.js 和 user_grpc_web_pb.d.ts 文件
1 | protoc --grpc-web_out=import_style=commonjs+dts,mode=grpcwebtext:. user.proto |
或者可以直接生成 ts 文件
1 | protoc --grpc-web_out=import_style=typescript,mode=grpcwebtext:. user.proto |
2.2 生成 user_pb.js 和 user_pb.d.ts 安装相关依赖
具体代码在上方
3 编写 App.jsx
1 | import React, { memo } from "react"; |
1 | module.exports = { |
其他
1 | git submodule init |