问题标签 [grpc-web]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
275 浏览

protocol-buffers - grpc-web 使用通配符编译 proto 文件

我有一个文件夹protobuf,里面有很多可以编译的 .proto 文件

这会生成grpc_web_pb.js/output文件夹中,但我正在寻找一种不必调用protoc每个文件的方法,是否有通配符之类的东西?

我试过了

但这不起作用,失败了no matches found: *.proto

0 投票
1 回答
694 浏览

reactjs - 如何使用reactjs在grpc调用中传递数组

我想使用“grpc-web-client”模块将一组对象发送到带有 reactjs 的 grpc 调用中。但它在发送对象数组时给了我一个错误。以下是错误:

我不明白为什么它不发送这个。以下是我要发送的对象数组的结构:

在 .proto 文件中定义如下:

请有人帮我解决这个问题。

0 投票
0 回答
1119 浏览

typescript - 使用 grpc-web 为 vue 配置 Envoy

不确定 SO 是否是这个问题的正确位置,但我试一试。我需要让 grpc-web 在我的 Vue 前端运行,所以我了解到我需要 grpc 消息的代理。

运行在vue app虚拟 linux 机器以及envoy代理上,但老实说,整个端口配置对我来说有点神秘。这是我现在的envoy.yaml

我需要一些关于如何使用envoy proxyis this conext 的帮助。我唯一知道的是正确的是socket_address指向grpc_service我的后端 grpc 服务器的。但是我在哪个端口上运行vue app没有跨域以及这些如何prefixes工作?

编辑
我更新了我的envoy.yaml配置,如果我在浏览器中打开网络服务器地址 192.168.1.125: 8080 ,我现在得到的是

当我打开 192.168.1.125: 8001时,我看到了该网站,但我收到了跨域警告,因为

所以我的问题是,我如何配置特使代理没有任何跨域问题意味着访问端口 8080 上的网络服务器?

更新
我认为连接超时的根本原因与我的有关,http_filters这应该只应用于/grpc路由。但仍然无法找出有效的配置。

如果需要更多信息,请告诉我!

0 投票
0 回答
382 浏览

kubernetes - 使用 Contour Kubernetes Ingress 处理 CORS

目前允许 CORS 请求的最佳方式是什么?(鉴于 Contour Ingress 中的 CORS 支持当前位于“停车场”中)

我的特定用例是托管一个 GRPC 服务,该服务使反向代理。方便的是,contour 还支持开箱即用的 grpc-web,我们希望将其用于我们的 Web 服务。

但是,鉴于不支持 CORS,我们无法进行跨域请求。

除了让我们的 web 应用程序使用与 GRPC api 相同的域之外,目前还有其他解决方案可以满足我们的需求吗?

基本上,我们希望 envoy 的配置与GRPC Web 示例配置非常相似。

0 投票
1 回答
562 浏览

protoc - 使用 protoc-gen-grpc-web 生成原型定义时出现 TypeScript 定义文件的问题

我生成的原型定义有问题。

protoc-gen-grpc-web我正在使用从这里获得的最新版本(版本 1.0.7)

注意:我在 MacOS 和 Windows 以及 1.0.5 版本上都遇到了同样的问题。

我遇到的问题是我生成的定义缺少将其与其命名空间.分开的定义Class

例如。我的输出将如下所示:

见行country?: contact_mechanism_pbCountry.AsObject,

contact_mechanism_pbCountry应该是contact_mechanism_pb.Country

common_basic_pb这发生在,contact_mechanism_pb和的每种情况下banking_details_pb

但不适用于 和 的google_protobuf_timestamp_pb情况google_protobuf_empty_pb

这是我的gen-protos脚本的样子:

我尝试了很多不同的东西,但我无法使用这个工具获得预期的输出。

0 投票
1 回答
1359 浏览

ssl - 网页 gRPC + NGINX TLS 配置

我有一个 Node gRPC 服务器和一个 Web gRPC 客户端(带有 Angular 的 TS)。我使用 Nginx 作为代理来促进它们之间的通信。

我不知道如何使用 SSL 配置 Web gRPC 客户端 (TS)。我尝试将当前的 Nginx 配置和 Node 配置与 Node gRPC 客户端(不是 Web gRPC)一起使用。在那种情况下它起作用了。

节点 js 配置: 节点 js 配置

生成证书的脚本:

在上面的代码中,在 CN=dev 中,dev 是我服务器的 etc/hosts 文件中指向服务器自己地址的 DNS 条目。

Nginx 配置:

现在,web gRPC 部分(不工作给出了握手错误,没有正确的文档如何做到这一点,所以尝试查看这个和 grpcWeb 源代码并假设它会这样): web gRPC TLS 配置

这就是我现在所拥有的。任何帮助,将不胜感激。

0 投票
1 回答
129 浏览

grpc - grpc-web TLS 是否需要客户端的任何配置?

我一直在寻找这个。仍然不确定 Envoy 和 Nginx 是否为 web-gRPC 客户端完成所有 TLS 工作。

就我而言,我的 Nginx 配置适用于 gRPC 客户端和服务器。但是,它不适用于 web-gRPC 客户端。

0 投票
1 回答
294 浏览

blazor - blazor wasm --hosted + gRCP web(流)

是否可以通过 gRCP Web (http/1.1) 进行客户端服务器流响应?

我有一个有效的客户端/服务器+数据库解决方案,但似乎我必须等待完整的服务器响应(见//await Task.Delay(2000);服务器)

我想要发生的是客户端应该在它发送回客户端的每个“服务器滴答”上呈现,而不是等待流关闭并呈现完整的响应。

有什么想法吗?

原型

服务器

客户

在此处输入图像描述

0 投票
1 回答
268 浏览

flutter - grpc-web 安全性如何在生产中工作?

我在带有 gRPC 的 Go 服务器和我的 Flutter Web 应用程序之间使用特使代理。我可以在 envoy 和 Go 服务器之间使用 TLS,这很好,但我担心的是 envoy 和我的 web 应用程序之间。如何保护此连接?什么是最好的方法?

0 投票
1 回答
1390 浏览

go - 使用 Istio grpc-web 代理的 CORS 预检上的 golang gRPC 503

我正在尝试在 Kubernetes 中设置基于 go 的 gRPC 服务器,并通过 grpc-web 客户端发出请求。客户端首先运行 CORS 预检请求,该请求似乎到达了 gRPC 服务器。服务器在这些选项请求上返回 503。我可以使用 go gRPC 客户端直接连接到服务器,所以我认为如果 CORS 请求通过,其余的都可以正常工作。

  • 这是来自服务器的 OPTIONS 请求的日志消息:
  • 以下是使用 grpc-client 直接连接到 pod 时来自服务器的日志消息:
  • 对于服务器,我使用的是 helloworld ( https://github.com/grpc/grpc-go/tree/master/examples/helloworld )
  • 对于客户端,我通过在 helloworld 目录中使用 .proto 文件运行以下命令来生成 grpc-web 文件:protoc --js_out=import_style=commonjs:. --grpc-web_out=import_style=commonjs,mode=grpcwebtext:. helloworld.proto
  • 执行客户端的代码:
  • 网关和虚拟服务:
  • 服务: