问题标签 [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 回答
478 浏览

node.js - 最近安装 Grpc-js 时出错,指出“node-pre-gyp install 中的错误...”?

尝试启动项目并为 GRPC 安装节点客户端时出现最近的错误

命令: npm install --save grpc

我尝试更改我的 grpc 版本,将 node-pre-gyp 添加为 devDep,从源代码构建......

以前人们的答案中关于这个错误的几乎所有内容都没有奏效。

0 投票
1 回答
1945 浏览

amazon-web-services - How to call a grpc service running on ec2 from aws lambda

I have a grpc service, written in python, deployed on one EC2 instance. I have written a nodejs application and using the application, I am able to call the grpc service from my local machine, and also from another EC2 instance. However when I deployed the same application to Lambda (using serverless deployment), it is not able to call the same grpc service. I have added below line in the scripts section in the package.json so the code is able to deployed to lambda properly.

Initially the lambda was executing without any error, just that it was not calling the grpc service. After that I added VPC endpoint configuration in my serverless.yml file, it is returning Internal Server Error and logging error "EACCES: permission denied, open '/var/task/handler.js'" in cloudwatch.

Update: I updated the IAM roles, and now there is no error logged, but the lambda always respond "Go Serverless v1.0! Your function executed successfully!". None of the messages that I am trying to log in the callback to utterQuery method is logged in cloudwatch logs.

What could be wrong here.

Here is the serverless.yml file:

Here is the lambda function code:

0 投票
3 回答
2918 浏览

node.js - (Node.js) --grpc_out: protoc-gen-grpc: %1 不是有效的 Win32 应用程序

我想将我的 .proto 文件编译成存根,但是在输入命令时:

`protoc -I=. ./protos/dummy.proto --js_out=import_style=commonjs,binary:./server --grpc_out=./server --plugin=protoc-gen-grpc=which grpc_tools_node_protoc_plugin

我收到以下错误:

我已经安装的东西:

  • 视窗 10
  • npm install -g grpc-tools
  • npm install google-protobuf
  • 协议

注意:我注意到已经有一些类似的问题,但我没有找到 Node.js 的问题,而且已经提出的问题都有不同的解决方案。

0 投票
1 回答
832 浏览

node.js - 尝试在未找到与 gRPC 二进制模块相关的 Azure Functions 上运行 Node.js 时出错

让我们首先说我有一些Azure Functions使用 C# 的经验,但这是我第一次使用Node.json Azure Functions。所以,这可能是一个新手问题,也可能根本不是一个合适的问题。

我使用Node.js开发了几个函数(版本: 2.x)并将它们部署为 Azure Functions。除了依赖于Firebase

在我的函数相应文件夹上的index.js文件中,我声明了这些依赖项:

然后,在package.json文件中,我有以下内容dependencies(我只粘贴了相关部分):

这在本地运行良好。我可以毫无问题地在本地运行和调试它,但是一旦我在 Azure 上部署它,如果我run手动或使用触发器(在本例中为Timer 触发器),我会收到以下错误:

我的理解是无法找到该gRPC模块。另外,我知道它没有被找到,因为它不在预期的目录中,但是......

我怎样才能解决这个问题?我需要更改或执行哪些操作才能使其找到正确的目录或安装正确的依赖项?

此外,我在我的 CI 管道中添加了一个“npm 重建”,正如一些帖子中所建议的那样,但它似乎并不能解决我当前的情况。我也尝试将 Node 版本从 ~10 更改为 ~8,但我不确定我是否生效。我需要一些帮助,或者是否有人可以指出我正确的方向。

0 投票
1 回答
7348 浏览

node.js - grpc 尝试连​​接 http1.x 服务器

我有 Node.js grpc 服务器和 Node.js grpc 客户端。我的 grpc 服务器是不安全的服务器,我已经在本地使用我的客户端测试了我的 grpc 服务器。

但是我使用 nginx 入口控制器和网络负载均衡器部署到 kube,然后出现错误。

奇怪的是,当我使用grpcurl时,我可以获得成功的结果。

我正在使用这个脚本。

是不是因为我的服务器问题?还是我的客户不正确?

0 投票
1 回答
988 浏览

javascript - gRPC 客户端流式传输 rpc 管道错误。(在结束错误后写入)

我正在研究节点运行时的 gRPC 服务器-客户端编程。

我在客户端流式传输 rpc 中遇到错误。请参阅以下 rpc 方法签名。

我想将文件从客户端上传到服务器。所以我定义了客户端流 rpc。

问题是文件上传只会第一次成功。

当我尝试上传另一个文件时,出现错误。在结束错误之后写。

我认为我没有很好地处理流。任何人都可以帮助为什么会发生这种情况?谢谢!

==============

0 投票
1 回答
1307 浏览

javascript - gRPC 服务器端流式传输:如何无限期地继续流式传输?

我在使用 NodeJS 编写的轻量级 gRPC 服务器时遇到问题。我在这里引用文档。我已经能够编译代表消息和服务的 proto 文件,并且已经成功地建立了一个带有服务器端流方法的 gRPC 服务器,我可以通过BloomRPC触发。

我有一个名为 proto 的消息parcel,它有一个字段:parcel_id. 我希望这种方法每秒传输一个数据包。我的第一个基本步骤是一个循环,每秒执行一分钟,并通过call.write(parcel). 我已经包含了下面的方法,当我通过 gRPC 调用它时它执行没有错误。

我的问题是,虽然我能够调用我的方法并接收结果,但行为是我立即在客户端上收到第一个结果(对于 NodeJS 客户端代码BloomRPC 调用),但同时收到最后 59 个结果只有在服务器执行之后call.end()。没有错误,我在客户端收到的包裹对象是准确的并且格式正确,它们只是按照描述进行批处理。

如何实时实现我的包裹源源不断?这可能吗?我看过但不能确定 - gRPC 服务器端流默认情况下是否具有批处理行为?我已尽我所能理解 gRPC 文档,但我不知道我是否只是试图强制 gRPC 服务器端流做一些他们不打算做的事情。感谢您的帮助,如果我可以提供更多信息,请告诉我,因为这是我的第一个与 gRPC 相关的 SO 问题,我可能错过了一些相关信息。

0 投票
1 回答
347 浏览

node.js - Node.js gRPC 库上的 QUIC 协议

有没有办法在 Node.js gRPC 库中启用 QUIC 协议?在客户端(Android 应用程序),我可以将传输通道换成支持 QUIC 的 Cronet 实现,但我不知道如何在服务器端启用该协议。Server 类似乎没有提供任何交换通道的方法,仅传递其中没有引用 QUIC 协议的通道选项

0 投票
1 回答
602 浏览

grpc - 是否有多个 grpc 服务协同工作的示例

多个 gRPC 服务示例

您好,来自宁静的 Scala 游戏框架世界。

我想知道是否有人知道与将多个服务串在一起以相互调用相关的任何示例项目、视频、媒体文章。

到目前为止,我看到的所有示例都是与其他服务没有太多交互的独立服务。

我试图想象的一个关键示例是用户服务。例如,在创建用户期间,可能需要调用多个其他服务来处理与创建新用户相关的事务 1. 可能会调用 Orders 服务来创建订单 2. 可能会调用 Appointments 服务来安排第一次约会3. 可以调用推荐服务器来创建推荐

我从高层次上知道,使用从其他服务的照片定义创建的存根来调用这些服务作为用户服务的一部分,创建用户 rpc 调用,但真的是这样吗?

创建用户的 rpc 调用真的应该只使用存根并将逻辑实现到其他服务吗?

先感谢您。

0 投票
1 回答
940 浏览

node.js - 在keepalive失败的情况下如何获取服务器拦截器/回调?

我在 nodejs 中有一个 GRPC 服务器,它使用适当的 keepalive 选项管理客户端连接。

当我断开电缆连接时,服务器正确检测到客户端不再可访问,如以下日志所示:

我找不到通过事件/回调/拦截器获取此信息的方法。

有什么东西存在吗?

否则,如果高级代码无法检测到这个keepalive在服务器端有什么用?

更新

尽管答案的真实现实令人悲伤,

我找到了解决方法

通过使用客户端流式传输并在服务器端设置 keepalive 选项。在这种情况下,当发生连接问题时,keepalive 会检测到它,并且流式呼叫会触发呼叫的“结束”事件。