gRPC Web 是一个使用 Web 技术栈进行通信的 gRPC 客户端和服务器库。它允许您在浏览器中直接使用 gRPC,无需任何插件或额外的客户端库。

为什么选择 gRPC Web?

  • 跨平台:在浏览器和 Node.js 中都可以使用。
  • 高效:使用 HTTP/2 进行传输,支持 HTTP/3,具有更好的压缩和传输效率。
  • 易于集成:与现有 Web 技术栈无缝集成。

快速开始

以下是一个简单的 gRPC Web 示例:

// 服务器端
const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');
const packageDefinition = protoLoader.loadSync('path/to/your.proto', {
  keepCase: true,
  longs: String,
  enums: String,
  defaults: true,
  oneofs: true
});
const proto = grpc.loadPackageDefinition(packageDefinition);

const server = new grpc.Server();
server.addService(proto.YourService.service, {
  yourMethod: (call, callback) => {
    callback(null, { response: 'Hello, world!' });
  }
});
server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
server.start();

// 客户端
const grpcWeb = require('grpc-web');
const client = new proto.YourService.YourServiceClient(
  'http://localhost:50051',
  grpcWeb.createChannel()
);

client.yourMethod({ request: 'request' }, (err, response) => {
  console.log(response.response);
});

更多资源

gRPC Web 示例