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

node.js - 从 Nestjs 中的 observable grpc 服务获取数据,

我想使用 gRPC 服务在我的微服务之间进行通信。但是当从 Grpc 服务获得响应时,在返回方法之前,我想做一些修改和功能。

示例项目: https ://github.com/nestjs/nest/tree/master/sample/04-grpc

像这样:

但在 console.log 中显示以下消息而不是原始响应。

0 投票
1 回答
2510 浏览

javascript - 如何在 JavaScript 中使用 google-protobuf 对带有“map”的消息进行编码?(协议缓冲区)

我想问一下如何编码(序列化)地图字段。

根据谷歌指南,“JavaScript 生成代码”包含以下地图字段功能。生成解码函数 ( getFooMap())。但是我在任何地方都找不到地图类型的编码功能或指南。(我以为会有类似的功能setXXXMap(),但我找不到。)

我应该如何编码地图字段?

https://developers.google.com/protocol-buffers/docs/reference/javascript-generated#map

地图字段

对于此带有地图字段的消息:

编译器生成以下实例方法:

getFooMap():返回包含 foo 的键值对的 Map。然后,您可以使用 Map 方法与地图进行交互。

0 投票
1 回答
267 浏览

tcp - What are the causes for os_error: message too long

We have a client and server communicating each other with grpc. Previously the server was running on Windows Server, and the client running on Linux or MacOS. Everything works perfectly until we migrate the server from Windows Server to a docker container.

Then we observed some weird tcp broken when we send a large amount of request from client to server.

Then we dig into the grpc arena and run our client and server with GRPC_VERBOSITY=info and GRPC_TRACE=tcp. Then we found that the disconnection was caused from the server side, with error message below:

So my question is what does the os_error: message too long really means? What is the next step for me to investigate?

Linked issue

0 投票
1 回答
193 浏览

docker - 对 gRPC 架构的担忧(gRPC、nginx、docker)

我目前正在尝试创建一个有趣的跟踪工具(它支持 gRPC 跟踪),并且对我是否正确地考虑了这个架构感到困惑。跟踪工具跟踪请求的整个工作流程/旅程(从用户单击按钮的那一刻到请求到达 API 网关、微服务之间以及返回的时间)。

假设应用程序是一个书店,它被分解为 2 个微服务,可能是帐户和书籍。假设有一个用户界面,当您单击一个按钮时,它允许用户收藏一本书。我只使用了 2 个微服务来保持这个例子的简单。

**所以我的目标是找到一种方法来跟踪该请求。所以我们可以想象请求到 nginx

在此处输入图像描述

问题 1:当请求到达 nginx 时,它是 HTTP。很酷,但是当请求发送到微服务时,它是一个 grpc 调用(或通过 http2)。nginx 可以获取一个 http 请求,然后通过 http2 发送该请求......?不确定我的措辞是否正确。我知道 nginx plus 支持 http2。我也知道 grpc 也有一个 grpc 网关。

关注点 2:容器化。我必须单独容器化这两个微服务,还是必须容器化整个 docker 容器本身。连接nginx和docker简单吗?

关注点 3:在跟踪 gRPC 请求时(了解请求完成的时间),我正在考虑使用中间件记录器或跟踪 API(opentracing、jaegar 等)来执行此操作。我怎么才能知道 gRPC 发出请求需要多长时间?

我想知道是否有可能解决这些问题,我的思考过程是否正确,以及这种架构是否具有特色。

0 投票
1 回答
433 浏览

grpc - GRPC 中间件库是否支持 grpc-node?

GRPC 中间件库是否支持 grpc-node?我对记录 grpc proto 请求很感兴趣,看来我可能必须学习 golang 才能拥有日志记录功能?

0 投票
1 回答
893 浏览

grpc - 使用 grpc 的 2 个微服务之间的通信如何工作?

假设您有一个像书店这样的应用程序,并且您在后端将其拆分为两个简单的微服务 ->

微服务 1:图书购买者(有账户) 微服务 2:图书清单。

假设您从前端发出请求,进入反向代理,然后请求进入微服务 1。

您如何准确地想象微服务 1 与微服务 2 的通信方式?

您是否将微服务容器化,并且在其中您有一个 grpc 客户端和服务器?

客户端是否与微服务 1 的服务器以及微服务 2 的服务器进行通信?

在此图像中,您似乎将客户端和服务器分别容器化......?

gRPC 究竟是如何在微服务之间进行通信的? 在此处输入图像描述

0 投票
1 回答
319 浏览

grpc-node - How to set oneof fields in node grpc

How do you use oneof fields in a grpc node? I am using dynamic code generation. I tried to modify the quickstart with

However I do not know how to set the name in the request in the client. Thank you

0 投票
1 回答
180 浏览

google-cloud-platform - 是否可以在没有谷歌云平台的情况下使用http转码(到grpc)?(节点-grpc)

很抱歉这个基本问题(我是 gRPC 的新手)。是否可以在没有谷歌云平台和端点的情况下使用 http 转码?

(参考这篇文章:https ://cloud.google.com/endpoints/docs/grpc/transcoding )

我目前正在尝试创建一个模拟应用程序,我们正在尝试使用某种带有 UI 的前端(或者可以去无头浏览器),它可以将 HTTP 请求发送到可扩展服务代理,然后 ESP 将将 HTTP 请求转码为 HTTP2,以便可以将其作为请求发送到我们的 gRPC 服务。我认为 K8s 有点矫枉过正,因为我们只有几个容器(而且对 k8s 中的部署不太熟悉)。

我试图只使用 grpc-node,并想在 ESP 中进行 http 映射。我们可以将 <import "google/api/annotations.proto";> 导入到我们的 protofile 中并获得 HTTP 映射的这个功能吗?

0 投票
1 回答
352 浏览

grpc - 在 grpc-node 中记录请求时间是否有任何选项?

在 grpc-node 中记录请求时间是否有任何选项?我已经能够使用 opentelemetry 和 jaegar 记录响应时间(以显示响应时间)。我也找不到任何 npm 包,但只是想问你们是否确实找到了 grpc-node 的任何选项。

0 投票
2 回答
642 浏览

protocol-buffers - Grpc-node: How to edit metadata in gRPC server and send back edited metadata to grpc-client?

Grpc-node: How to edit metadata and send back edited metadata to client?

Below is currently what I have at the moment, and it seems like the metadata can be passed to the grpc-client RPC method ('greetmath'), but I can't edit the metadata in the server and send it back to the client. It can only send back metadata that was originally created.

Is there anyway I can edit the metadata in the grpc server and send that edited metadata to the grpc client?

Greeter_server.js

greet.proto

greeter_client.js