GRPC Bus WebSocket Proxy 正是通过在 WebSocket 连接上代理所有 GRPC 调用来实现这一点,从而为您提供与浏览器中的 Node GRPC API 非常相似的东西。与 GRPC-Gateway 不同,它适用于流式请求和流式响应,以及非流式调用。
有服务器和客户端组件。GRPC Bus WebSocket 代理服务器可以通过 Docker运行docker run gabrielgrant/grpc-bus-websocket-proxy
在浏览器端,您需要安装GRPC Bus WebSocket 代理客户端npm install grpc-bus-websocket-client
然后创建一个新的 GBC 对象:new GBC(<grpc-bus-websocket-proxy address>, <protofile-url>, <service map>)
例如:
var GBC = require("grpc-bus-websocket-client");
new GBC("ws://localhost:8080/", 'helloworld.proto', {helloworld: {Greeter: 'localhost:50051'}})
.connect()
.then(function(gbc) {
gbc.services.helloworld.Greeter.sayHello({name: 'Gabriel'}, function(err, res){
console.log(res);
}); // --> Hello Gabriel
});
客户端库希望能够通过.proto
AJAX 请求下载文件。service-map
提供代理服务器所见的 proto 文件中定义的不同服务的 URL 。
有关更多详细信息,请参阅GRPC 总线 WebSocket 代理客户端自述文件