问题标签 [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.
javascript - 节点 gRPC:将元数据从服务器发送到客户端而不会出错
从客户端,很容易为服务器添加元数据:
上面可以在服务器上访问,如下所示:
现在,如果我们需要将元数据从服务器发送到客户端,我们这样做:
请注意,我们正在传递错误,实际响应是null
.
如何传递null
错误和非空响应以及元数据?
如果我执行以下操作,它似乎不起作用,因为无法访问客户端上的元数据而不会出现错误。
当没有错误时,gRPC 规范是否明确禁止将元数据从服务器发送到客户端?
另外,在我们讨论的时候,我想有人解释一下我们如何在 Node.js 中从服务器向客户端发送尾随元数据和初始元数据。
相关链接:
grpc - gRPC 中的会话状态
gRPC 有会话状态的概念吗?我可以保持与会话关联的状态,例如允许客户端增量构建数据结构,并在会话结束时对其进行垃圾收集吗?
node.js - 如何将元数据添加到流式客户端调用 [Nodejs]
如何将元数据添加到流式客户端调用 [Nodejs]
publish-subscribe - 使用 grpc 和 node js 通过 HTTP 2 访问 Google Cloud Pubsub
我正在尝试在 nodejs 中将 grpc 与 google cloud pubsub 一起使用,但我无法理解它是如何工作的以及它是如何实现的,nodejs 中没有示例,而且 grcp 的文档也不清楚。文档中只有功能
我看过很多链接,但我什么也没找到
我不明白:
1)我必须使用哪个库在 .proto 文件中使用它的包以及如何要求/安装它?
2) 我必须在哪里提供我的 projectId 或服务文件路径?
我需要一些指导,或者如果 nodejs 中有任何示例,那就太好了。谢谢。
proxy - Node.js 中的 Google GAX / gRPC 不适用于 HTTP/S 代理
我正在尝试从 Google 的 Dialogflow v2 Node.js SDK 获取 Dialogflow SDK 示例来工作。我正在使用 node.jsv8.10.0
和 dialogflow node.js SDK 版本0.5.0
。我在尝试从公司 http/s 代理后面运行“检测意图”示例时遇到了这个问题:
我在这里看到了这篇文章:https ://medium.com/google-cloud/accessing-google-cloud-apis-though-a-proxy-fe46658b5f2a这似乎非常面向 Java,但它建议GRPC_PROXY_EXP
设置环境变量为了让 gRPC 调用在代理后面工作。我在运行 node 的 shell 中设置了环境变量,export GRPC_PROXY_EXP="$https_proxy"
并尝试再次运行示例,但问题相同。请注意,我的$http_proxy
,$https_proxy
变量是相同的。
当连接到没有代理的 wifi 网络时,相同的示例在同一台机器上工作;并且tcpdump
数据包分析表明有两个 TCP 连接(不同的端口)正在使用中:一个有效(并且首先打开),另一个无效,并且遇到代理错误。第二个连接立即开始CLIENT_HELLO
TLS 消息,当它需要首先验证并向 HTTPS 代理发送CONNECT
消息时(与第一个 TCP 连接一样)。
我是否遗漏了什么,或者这是对话流(google-gax / grpc)节点库的问题?
node.js - Enable compression in nodejs grpc server
Is there any way to enable compression in a grpc-nodejs server?
It seems that it's possible to implement it, since it can deflate/unzip compressed data, but cannot compress while sending the response back.
I spun up the test nodejs server, and interacted with it using a python client. I MITM-ed the interaction between the server and client using nc
to get the number of bytes transferred, and see the effect of compression.
When I sent the 'grpc.default_compression_algorithm'
metadata while making the request through the python client, I was able to see that the data sent by the client was compressed, but the data sent back by the server was uncompressed. (sent 815, rcvd 300324
for an echo grpc service).
Setting metadata on the nodejs server side doesn't help, it still sends uncompressed data.
The reason why I think this should be possible is because it was able to read the compressed request. Also the npm grpc package is a wrapper over a grpc binary. Running an nm grpc_node.node | grep gzip
returns
hyperledger-fabric - 超级账本结构。从公司 http 代理后面调用事务
通过作为客户端调用事务,我需要使用 grpc 连接到 peers 和 orderer。
不幸的是,我无法通过环境变量“http_proxy”和“https_proxy”中定义的http代理获取grpc请求。
我正在使用结构节点 SDK。
我正在使用库“fabric-client”v1.2 并尝试使用 grpc v 1.6.0 和 1.13.1。两者都失败了。
为了您的信息,与 CA 服务器的连接(通过 http)使用 global-tunnel-ng 重定向到代理。有用。
kubernetes - 如何在 Google Cloud Platform 上部署 GRPC 服务器和客户端?
我是使用 GCP/Kubernetes 的新手。我想将 GRPC 服务和客户端都部署到 GCP。
我已经阅读了很多关于它的内容并尝试了几件事。在云端点上有一些东西,您可以在其中编译您的 proto 文件并执行 api.config.yaml。(https://cloud.google.com/endpoints/docs/grpc/get-started-grpc-kubernetes-engine)
这不是我想要做的。我想用它的 .proto 上传一个 GRPC 服务并公开它的 HTTP/2 公共 IP 地址和端口。然后,部署一个与该地址交互并公开 REST 端点的 GRPC 客户端。
我怎样才能完成这项工作?
hyperledger-fabric - gRPC 失败,在多个节点上的 Hyperledger Fabric 区块链上执行链代码时
我想在多个节点上运行我自己的超级账本区块链。
我有以下设置:
我的 Ubuntu PC 正在托管一个订购者、对等方、沙发数据库、CA 服务器。
我的 Raspberry Pi(运行 Ubuntu Mate)正在托管:一个 peer 和 couch db。
这两个节点都在我的 docker swarm 组中。(我使用以下教程进行设置,并在RPi上运行 Fabric。)
我成功创建了一个频道。订购者和两个同行都能够加入它。peer chaincode
然后我使用命令行界面中的工具安装并实例化了链代码。我还用一些值初始化了我的分类帐。
如果我在命令行界面 docker image 中执行以下命令:
无论我是在 RPi 还是 PC 节点上执行 cmd,它都会成功地从账本中返回所有数据。
我面临的问题如下:只要我想通过 Hyperledger-Fabric-SDK 运行相同的查询,它仍然会返回一些 grpc 错误。
Javascript SDK:
下面是我执行的 query.js(它来源于这段代码。
以下行:return channel.queryByChaincode(request);
返回错误:来自查询的错误 = 错误:在截止日期之前无法连接
我搜索了这个错误的根源,发现它可能是 grpc 的暂时故障,因此他们将其关闭,直到有人再次遇到它1。
执行:
查询.js:
由于我真的很绝望,所以我在 Java SDK 中尝试了同样的方法。此代码源自本教程。
运行它时,我遇到了类似的错误。此行:channel.initialize();
导致以下错误:
错误频道 - 向 peer0.org1.example.com 发送提案失败,因为:gRPC 失败=状态{code=UNKNOWN,描述=访问被拒绝:频道 [mychannel] 创建者组织 [Org1MSP],原因 = null}
异常跟踪如下:
主.java:
有人可以帮我解决这个问题吗?一个有趣的提示是,如果我在我的 PC 上本地执行 Hyperledger 网络。两种代码(JS 和 Java)都可以正常工作。