问题标签 [grpc-node]

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 投票
0 回答
419 浏览

node.js - 如何在 gRPC 服务器中限制 IP 访问?

我是 gRPC 的初学者,作为我的第一个挑战,我正在构建一个由一些 gRPC 微服务(根据 API-Gateway 模式)组成的 Node JS 平台。我想限制来自外部来源的所有访问 - 只有网关本身才能访问我的内部结构。

经过一段时间的搜索,我发现了 3 种限制访问的方法:

  • 1 - HTTP 认证;
  • 2 - 令牌认证;
  • 3 - TSL/SSL 认证;

我的网关已经有了一个认证机制——JWT 中间件。我不想为每个微服务都复制它并产生大量的代码冗余。我想找到一些方法来过滤每个内部微服务中的 IP 请求,并允许或禁止其访问。简而言之,我要确保只有网关 IP 才能访问所有内部微服务。

在这里,组件图显示了我的初始架构: 在此处输入图像描述

我们可以在 Express API 中轻松完成:

有什么方法可以使用 gRPC 构建类似的东西吗?

非常感谢。

0 投票
2 回答
995 浏览

javascript - 在为 gRPC 流在服务器端调用 .end() 之前,如何在客户端接收数据

我目前正在尝试使用 gRPC Node.js API 设置服务器流。为此,当我在服务器端写入客户端立即接收数据事件的流时,我想实现这一点。

目前,如果我只在服务器端调用 write,我不会在客户端收到任何东西。但是,只要我在服务器上调用 end 函数,客户端就会收到所有数据事件。

为了测试这一点,我使用了一个无限的 while 循环在服务器端编写消息。然后客户端不接收消息(数据事件)。相反,如果我使用 for 循环并在之后调用 end ,则客户端在调用 end 时会收到所有消息(数据事件)。

我的 .proto 文件:

在服务器端,我实现了 start 函数并尝试无休止地向调用写入消息:

我将该功能注册为服务器中的服务:

在客户端,我生成一个适当的调用并注册数据和结束事件:

我还尝试用python编写服务器端。在这种情况下,节点客户端会立即接收消息,而不仅仅是在服务器端结束流之后。所以我想这对于使用 Node API 编写的服务器也应该是可能的。

0 投票
1 回答
1286 浏览

vue.js - 是否有可能在 Nuxt.js 中使用 gRPC?

我使用 Nuxt.js 为我从 REST API 中提取的一些数据构建前端。现在我需要调用远程服务上的函数,最好是通过 gRPC,因为该服务有一个端点。

我搜索了网络,但我想我误解了使用 nuxt 创建前端的整个过程,因为我找不到关于该主题的任何信息。

例如,我如何将此处提供的解决方案嵌入:https ://github.com/grpc/grpc-node到我的前端?

0 投票
1 回答
669 浏览

ssl - gRPC、NodeJS、mTLS istio 抛出 SSL 错误

因此,我们正在为我们的集群迁移到 istio。现在,我们所有的后端微服务都通过 GRPC(grpc-node)与我们自己的证书启用 TLS 进行通信。而且效果很好。但是,每当我们使用 istio sidecar 时,都会出现以下错误:

9 ssl_transport_security.cc:1245] Handshake failed with fatal error SSL_ERROR_SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number.

这当然意味着事情没有连接并且服务失败。

这让我觉得特使代理没有正确处理我们的证书,我们应该使用他们的 mTLS 配置,但是我不知道如何将这些证书(或找到它们)提供给我的 gRPC 客户端/服务器。欢迎任何想法。

0 投票
2 回答
1780 浏览

node.js - 如何使用 Node grpc 将枚举解析为字符串值?

将 grpc 与 Node 一起使用,响应我的查询的枚举解析为整数值。但是,当我使用 BloomRPC 进行相同的查询时,枚举解析为整数值。

是否有参数或选项可以强制使用 Node grpc 将这些枚举解析为字符串?

0 投票
0 回答
64 浏览

node.js - 在 Node.js 中调用 Grpc 服务

我正在使用 node.js 来设计 GraphQL 服务器,而对于解析器部分,我正在使用 GRPC(proto) 服务,所以我在 node.js 中设计了另一个 GRPC 服务。现在我无法理解如何在 GraphQL 服务器中调用服务函数。

在 C# 中,首先我们必须从 proto 创建一个 .cs 文件,然后将生成 .cs 文件的引用提供给另一个服务,并使用 APIGateway 创建请求并调用 GRPC 服务的功能。

我在google上搜索,一些博客建议生成.js文件并给出GraphQL服务器内部生成的.js文件的参考并调用gRPC服务的功能。有没有其他方法可以在 node.js 中调用 GRPC 服务?

0 投票
1 回答
3624 浏览

protocol-buffers - grpc服务中如何区分未提供和空数组?

请参阅https://github.com/grpc/grpc-node/issues/1202

通常在 CRUD 操作中,未提供的值表示不更改该字段,空数组 [] 表示清除该字段内的所有项目。

但是如果你尝试实现 CRUD 操作并通过 grpc 将它们作为服务提供,那么上面的场景很难实现。

如果您使用默认选项加载包,则客户端无法删除 a 的项目

因为参数到达服务器端时就{a: []}变成了。{}

如果您使用选项 {arrays: true} 加载包,则该字段a将被无意中清除,而客户端仅尝试更新其他字段:

因为参数到达服务器端时就{b: 'updated value'}变成了。{a: [], b: 'updated value'}

任何人都可以分享一些关于如何使用grpc-node和 处理这两种情况的更好的想法proto3吗?

0 投票
1 回答
264 浏览

javascript - gRPC - Node Js - 如何将请求从客户端发送到具有不同端口的服务器?

我是 gRPC 的新手。我用 gRPC 编写我的应用程序。它与同一端口中的客户端和服务器一起工作得很好。现在,我想将客户端端口设置为与服务器上的端口不同。我在谷歌中发现了很多小时这个问题,但我找不到它。我能做些什么。

我的服务器代码:

我的客户代码:

0 投票
0 回答
498 浏览

travis-ci - Travis CI 上的 grpc TCP 读取失败错误,哪里出错了?

我编写了一些涉及 grpc 调用和 100% 通过本地计算机的测试,但是在 Travis CI 构建中,它 100% 失败声称:TCP Read Failed,任何人都可以阐明哪里出了问题?

详细日志在这里:

https://travis-ci.com/Jeff-Tian/grpc-man/builds/140791394?utm_medium=notification&utm_source=email

提前致谢!

我的调查:

首先,我怀疑它是由我正在监听的主机或端口引起的,所以我将grpc端点从更改0.0.0.0:8080127.0.0.1:8080,但结果保持不变。

0 投票
1 回答
2966 浏览

grpc - 如何为 Node 编译 gRPC Proto 文件?

gRPC文档描述了如何使用protoc命令行程序将文件编译为除 Node 之外的*.proto所有语言的特定语言。

在那里,仅描述(在撰写本文时)如何动态加载和在运行时(在幕后)生成 JS 代码。

是否可以使用protoc程序直接将proto文件编译为JS,类似于其他语言?