【问题标题】:Web client communicate with gRPC serverWeb 客户端与 gRPC 服务器通信
【发布时间】:2016-10-04 00:02:42
【问题描述】:

我有一个 c++ 服务,我打算使用 gRPC 服务器公开它。 Web 浏览器与 gRPC 服务器通信的方式是什么?我在前端使用 angularJS。

我看grpc documentation。但找不到有关浏览器支持的信息。

【问题讨论】:

标签: protocol-buffers grpc


【解决方案1】:

我使用了 grpc 网关。许多大型项目也使用它。 它将 GRPC RPC 翻译成 Rest / JSON。

https://github.com/gengo/grpc-gateway

【讨论】:

  • 我使用 grpc-java 作为服务器,我知道 grpc-gateway 是在 go 中创建的。那么我可以在我的项目中使用它吗?怎么样?
【解决方案2】:

How to bring a gRPC defined API to the web browser http://www.grpc.io/faq/ 看来您需要翻译服务。如果不是,gwt 支持对象序列化和 rpc。这是一个陡峭的学习曲线。

【讨论】:

    【解决方案3】:

    使用一些最近发布的技术(以及可能重复的问题one of the answers):我使用了grpcwebproxy(在 Python grpc 服务器之上)和相应的ts-protoc-gen 插件来自不可能的。它直接在客户端/服务器之间“对话”gRPC(遵循初步的网络规范),不使用 REST 或 JSON 翻译,并允许您在客户端和服务器端使用 proto 文件:

    https://improbable.io/games/blog/grpc-web-moving-past-restjson-towards-type-safe-web-apis

    https://github.com/improbable-eng/grpc-web

    【讨论】:

      【解决方案4】:

      现在 gRPC web 可以使用了。

      https://github.com/grpc/grpc-web

      【讨论】: