问题标签 [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.
node.js - 如何在 gRPC 服务器中限制 IP 访问?
我是 gRPC 的初学者,作为我的第一个挑战,我正在构建一个由一些 gRPC 微服务(根据 API-Gateway 模式)组成的 Node JS 平台。我想限制来自外部来源的所有访问 - 只有网关本身才能访问我的内部结构。
经过一段时间的搜索,我发现了 3 种限制访问的方法:
- 1 - HTTP 认证;
- 2 - 令牌认证;
- 3 - TSL/SSL 认证;
我的网关已经有了一个认证机制——JWT 中间件。我不想为每个微服务都复制它并产生大量的代码冗余。我想找到一些方法来过滤每个内部微服务中的 IP 请求,并允许或禁止其访问。简而言之,我要确保只有网关 IP 才能访问所有内部微服务。
我们可以在 Express API 中轻松完成:
有什么方法可以使用 gRPC 构建类似的东西吗?
非常感谢。
javascript - 在为 gRPC 流在服务器端调用 .end() 之前,如何在客户端接收数据
我目前正在尝试使用 gRPC Node.js API 设置服务器流。为此,当我在服务器端写入客户端立即接收数据事件的流时,我想实现这一点。
目前,如果我只在服务器端调用 write,我不会在客户端收到任何东西。但是,只要我在服务器上调用 end 函数,客户端就会收到所有数据事件。
为了测试这一点,我使用了一个无限的 while 循环在服务器端编写消息。然后客户端不接收消息(数据事件)。相反,如果我使用 for 循环并在之后调用 end ,则客户端在调用 end 时会收到所有消息(数据事件)。
我的 .proto 文件:
在服务器端,我实现了 start 函数并尝试无休止地向调用写入消息:
我将该功能注册为服务器中的服务:
在客户端,我生成一个适当的调用并注册数据和结束事件:
我还尝试用python编写服务器端。在这种情况下,节点客户端会立即接收消息,而不仅仅是在服务器端结束流之后。所以我想这对于使用 Node API 编写的服务器也应该是可能的。
vue.js - 是否有可能在 Nuxt.js 中使用 gRPC?
我使用 Nuxt.js 为我从 REST API 中提取的一些数据构建前端。现在我需要调用远程服务上的函数,最好是通过 gRPC,因为该服务有一个端点。
我搜索了网络,但我想我误解了使用 nuxt 创建前端的整个过程,因为我找不到关于该主题的任何信息。
例如,我如何将此处提供的解决方案嵌入:https ://github.com/grpc/grpc-node到我的前端?
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 客户端/服务器。欢迎任何想法。
node.js - 如何使用 Node grpc 将枚举解析为字符串值?
将 grpc 与 Node 一起使用,响应我的查询的枚举解析为整数值。但是,当我使用 BloomRPC 进行相同的查询时,枚举解析为整数值。
是否有参数或选项可以强制使用 Node grpc 将这些枚举解析为字符串?
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 服务?
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
吗?
javascript - gRPC - Node Js - 如何将请求从客户端发送到具有不同端口的服务器?
我是 gRPC 的新手。我用 gRPC 编写我的应用程序。它与同一端口中的客户端和服务器一起工作得很好。现在,我想将客户端端口设置为与服务器上的端口不同。我在谷歌中发现了很多小时这个问题,但我找不到它。我能做些什么。
我的服务器代码:
我的客户代码:
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:8080
为127.0.0.1:8080
,但结果保持不变。
grpc - 如何为 Node 编译 gRPC Proto 文件?
gRPC文档描述了如何使用protoc
命令行程序将文件编译为除 Node 之外的*.proto
所有语言的特定语言。
在那里,仅描述(在撰写本文时)如何动态加载和在运行时(在幕后)生成 JS 代码。
是否可以使用protoc
程序直接将proto文件编译为JS,类似于其他语言?