问题标签 [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 投票
1 回答
107 浏览

protocol-buffers - 如何定义处理任何调用的 gRPC 服务?

我正在尝试做一些逆向工程,试图了解几个 .proto 文件中调用了哪些服务。我的问题是是否有可能在服务器上实现一个服务来处理所有的调用,并为我提供调用了哪个函数和服务的信息。

例子:

协议.proto


服务器.js


我想要做的是实现处理两个(所有)调用的第三个函数,并显示调用了哪个服务。像这样的东西:

有没有办法做到这一点?

谢谢你。

0 投票
1 回答
175 浏览

firebase - 无法在控制台中运行 firebase 命令:错误(`@grpc/grpc-js 仅适用于节点 ${supportedNodeVersions}`)

在终端中,当我运行 firebase... 时出现以下错误:

我怎样才能删除这个grpc?或者我该怎么办?

0 投票
1 回答
958 浏览

node.js - 如何从 Node 中的 gRPC 服务方法获取元数据

我有一个像这样运行的 gRPC 服务:

我可以像这样从客户端调用我的服务:

但我不知道如何在我的服务实现中读取元数据。现在不管我定义了哪些重载getConsoleUser,元数据从来都不是参数之一。这是getConsoleUser,它只返回一些假数据:

我已经尝试将该签名更改为:

但是如果我这样做,第二个参数实际上是回调函数,第三个参数是未定义的。

有没有办法从我的服务实现中读取元数据?还是我必须将我的服务附加到其他一些类,以便我可以监听传入的元数据?

0 投票
1 回答
430 浏览

hyperledger-fabric - 在 Fabric 2.0 上出现 grpc 错误,容器无法在没有互联网的框中看到位于 musl 文件夹中的 grpc_node.node

我正在研究一个没有互联网的盒子。在 ftp 进入所有必需的 docker 映像、go 文件等之后,在 fabcar 中成功完成了 ./byfn.sh 和 ./startFabric.sh。但是我在执行 ./startFabric.sh 打字稿时遇到了问题,初始错误为以下

错误

/chaincode/output/node_modules/grpc/src/node/extension_binary/node-v72-linux-x64-musl/grpc_node.node”(未找到)

npm install 和 npm run build 在 /chanicode/fabcar/typescript 中成功运行且没有错误,并且文件 grpc_node.node 位于 node_modules 中的正确目录中。所以看起来容器没有找到它。/var/lib/docker/overlay/xxxxxxxxxxxxxx/chaincode/ouptut/node_modules/grpc/src/node/extension_binary/node-v72-linux-x64-musl 文件夹中缺少它。

请帮忙。

当我按照 murgatroid99 的指令运行 npm rebuild 命令时,我有以下成功输出“[grpc] Success:”/home/mp70332/fab2.0/fabric-samples-master/chaincode/fabcar/typescript/node_modules/grpc /src/node/extension_binary/node-v72-linux-x64-musl/grpc_node.node”是通过远程安装的”但是当我在fabcar中使用fabric 2.0运行“./startFabric.sh typescript”时,我收到以下错误

我们的盒子连接到一个在 .npmrc 中配置的工件,并且无法访问互联网。Artifactory 在 grpc/v1.24.2 中有 node-v72-linux-x64-musl.tar.gz

0 投票
1 回答
1391 浏览

javascript - 通过同一连接访问多个 gRPC 服务(使用单个通道)

请注意,这不是go 的类似问题的重复,因为它使用grpc-node. 由于某种原因,API 似乎存在差异

我执行创建 APIPackageDefinitions 和 APIPackagePbjects 的标准过程,并分别从每个客户端创建两个单独的客户端。

我正在寻找一种方法来创建两个共享相同连接的客户端。我认为我通过创建一个新语句Channel并将最后两个let语句替换为接近解决方案

但是,我收到了一个TypeError: Channel's first argument (address) must be a string. 我不确定如何合并新实例化的 Channel 来为每个服务创建新客户端。我在docs上找不到任何有用的方法。任何帮助,将不胜感激。

PS 目前我正在尝试使用两个服务,并为每个服务创建一个客户端,并让这两个客户端在同一通道上共享一个连接。是否可以使用两个服务,并为这两个服务创建一个客户端?也许我可以在这里使用 .proto 包命名空间来发挥我的优势?我的互联网搜索让我在这个问题上失败了。

0 投票
1 回答
314 浏览

node.js - 从nodejs中的gRPC函数内的数据库中获取数据

我一直在尝试使用 grpc nodejs 和 mongodb 创建一个按主题返回令牌的函数。

原型文件

服务器文件中的函数

register是猫鼬模型

当我尝试使用 BloomRPC 对其进行测试时,它会一直加载。

当我在回调中放置一个静态对象时它可以工作。像这样。

那么如何从我的数据库中获取数据并使用我的getToken函数发送它们?

0 投票
1 回答
558 浏览

javascript - Node JS:双向 GRPC 调用会打开多个 http2 连接吗?

双向 RPC 调用会打开多个 http2 连接吗?

我正在编写一个与我不拥有/控制的 GRPC 服务器通信的 GRPC 客户端。我正在使用@grpc/grpc-js包。有人问我这个库是否会打开到 grpc 端点的多个 HTTP2 连接,我对源代码不够熟悉,无法回答这个问题。我的拨打电话和打开流的代码如下所示

我自己已经开始研究这个问题,我发现它是启动 http2 连接Subchannel的对象,所以它似乎是每个子通道一个 http2 连接。但是,我不清楚调用、http2call 流、主通道、子通道、负载均衡器和过滤器堆栈之间的关系,我无法推断何时(如果有的话)第二个 HTTP2 连接将永远打开。

理想情况下,如果有人可以回答这个问题,双向 RPC 调用会打开多个 http2 连接吗?那太好了。如果这个答案太复杂,我会选择一个关于这些不同对象之间的关系的操作理论,这样我就可以自己推理这个,或者你可能认为会有所帮助的任何其他事情。

0 投票
1 回答
1002 浏览

java - 警告:RPC 失败:尝试在 java 和 Nodejs 中使用 GRPC 时,状态{code=NOT_FOUND,description=Not found,cause=null}

我目前正在尝试从我创建的 java 客户端向 nodejs 服务器发送请求,但我收到了上面显示的错误。我一直在对此进行一些研究,但似乎可以弄清楚它为什么会发生。我在nodejs中创建的服务器:

这是我在 java 中创建的客户端:

现在我唯一测试过的,因为它最基本的一个是 currentdetails。如您所见,我创建了一个 AirConditioningDevice 对象。我试图通过在作为 id 的文本框中输入 1 来获取它的详细信息,但就像我在发送它时所说的那样,我在标题中得到了错误。这是我创建的原始文件:

最后这是我回到控制台的所有内容:

我不知道我是完全关闭还是错误很小。有什么建议么?另一件事是我在 java 客户端和节点服务器中有相同的 proto 文件,我不知道这是否重要。最后一个是当我运行我的服务器时我也得到这个:DeprecationWarning: grpc.load: Use the @grpc/proto-loader module with grpc.loadPackageDefinition我不知道这是否与它有关。

0 投票
0 回答
747 浏览

node.js - 在 Node.js gRPC 客户端中使用来自双向流回调的响应

我有一个用 Go 编写并在 unix 域套接字上运行的 grpc 服务器。我正在为此编写一个 nodeJS 客户端。由于 grpc-node 不支持 unix 套接字,我不得不使用@grpc/grpc-js.

现在我面临的问题是我需要对从服务器返回的响应执行一些操作。我目前有这个并且它有效。但是有没有一种更清洁/更好的方法来实现这一点?

有没有更好的方法来做到这一点?我看过grpc-caller图书馆,但使用它@grpc/grpc-js会给我一个Channel's second argument must be a ChannelCredentials 错误。

这是我到目前为止写的客户端:https ://github.com/godaddy/asherah/blob/servicelayer_node/server/samples/clients/node/appencryption_client.js

0 投票
0 回答
87 浏览

google-cloud-functions - 在 Google Cloud 函数上使用节点部署 gRPC 时出错

我正在尝试将 Node.js 中的 Google Assisant SDK 部署到 Google Cloud Function 但遇到此错误。

从网上搜索,看来我需要使用特定的二进制文件进行重建。所以在我的package.json我添加了这个,但这似乎没有做任何事情。要部署,我只需将所有内容压缩并将其上传到 Google Cloud Function 界面。有任何想法吗?