Web 客户端与 gRPC 服务器通信

Posted

技术标签:

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

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

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

【问题讨论】:

你能详细说明这个问题吗?我认为文档非常简单。可能你之前没用过rpc? @RomainHippeau 我更新了问题。是的,我以前没有使用过 gRPC。我更新了问题。简而言之,如何从 Web 浏览器与 gRPC 服务器通信? ***.com/questions/35065875/… grpc.io/faq 看来您需要翻译服务。如果不支持对象序列化和 rpc。这是一个陡峭的学习曲线。 How to bring a gRPC defined API to the web browser的可能重复 【参考方案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

【讨论】:

以上是关于Web 客户端与 gRPC 服务器通信的主要内容,如果未能解决你的问题,请参考以下文章

gRPC-Web迈向GA

gRPC-Web发布,REST又要被干掉了?

grpc教程横向比较与grpc通信模式

gRPC 服务端和客户端源码分析(golang)

gRPC 在.Net core中使用gRPC

微服务 - 服务之间的通信gRPC