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 示例