问题标签 [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 - 两个内部 Cloud Run node.js 微服务如何通过 gRPC 成功通信?
Google Cloud Run 的新手,尝试让两个 node.js 微服务通过 gRPC 进行内部通信。
客户端界面:
客户端代码:
服务器代码:
服务器设置为监听 443。
当服务对公共请求开放时,上述方法似乎有效,但当您将服务器设置为内部时无效。有任何想法吗?
node.js - 有没有办法根据 loadSync 方法使用的选项生成 pb 文件?
使用动态代码生成时,我们可以.proto
使用以下方式加载文件:
我们可以设置keepCase
选项来保留字段名称,不要将它们更改为驼峰式。和enums
选项,所以我们可以使用枚举的字符串表示。
现在,我正在使用静态代码生成。面对以上两个问题,下面是我的服务的一个方法实现:
以下是我面临的问题:
- 使用 proto3 时无法设置默认值,想要将
page
参数的默认值设置为1
, NOT0
。 - 我需要手动将枚举从数字转换为字符串表示。
- 来自 RESTful API 响应的字段是蛇案例,但是,
protoc
插件生成具有驼峰案例字段的模型。所以我想保留案例。grpc_tools_node_protoc
grpc_tools_node_protoc_ts
- 如您所见,水合过程既不方便又乏味。我需要调用设置器来一一设置字段的值。
grpc - 对健康检查协议感到困惑
我已阅读以下文档、源代码和问题:
- https://github.com/grpc/grpc/blob/master/doc/health-checking.md
- https://github.com/grpc/grpc-node/blob/master/packages/grpc-health-check/test/health_test.js
- https://github.com/grpc/grpc/issues/10428
我提供一个例子并尝试解释:
我不清楚以下几点:
- 中的服务名称是否
statusMap
需要与协议缓冲区文件中的服务名称相同?或者可以任意指定服务名称。如果是这样,服务名称如何映射到协议缓冲区中定义的服务?
从健康检查协议:
服务器应手动注册所有服务并设置个人状态
为什么我们需要手动注册?如果可以生成服务代码,为什么 grpc 不帮我们自动注册服务名
statusMap
呢?(想象一下,一一设置100个服务的状态)服务状态是硬代码,不能在应用程序运行时更改。如果我的服务在运行时由于配置错误等原因不可用,下游服务不可用,但服务的状态始终是服务(因为它是硬代码),如果是这样,健康检查是什么意思?
对于 RESTful API,我们可以提供一个/health-check
或/ping
API 来检查整个服务器是否正常运行。
node.js - 有没有更方便的方法将普通的 js 对象映射到 grcp 响应类?
这是 RESTful API 响应 json:
UserServiceImpl.ts
:
如您所见,我必须GetUserByLoginnameResponse
手动将普通的 javascript 对象(API 响应)映射到类。这是繁琐且低效的。
我正在使用静态代码生成,因此GetUserByLoginnameResponse
该类是根据.proto
文件中定义的 IDL 生成的。
user.service.proto
:
grpc - 为什么grpc-go可以在同一个地址和端口运行grpc server和http server,而grpc-node不能
我已经阅读了这个答案:https ://stackoverflow.com/a/56943771/6463558,它说没有办法使用grpc-node
包在相同的地址和端口上运行 gRPC 服务器和 HTTP 服务器。
localhost:3000
但是我可以使用包在相同的地址和端口(例如,两者都使用)创建 gRPC 服务器和 HTTP 服务器grpc-go
。这是一个例子:https ://github.com/mrdulin/grpc-go-cnode/blob/master/cmd/server/main.go#L79
那么,为什么 grpc-node 和 grpc-go 行为不一致。这有意义吗?
我期望的结果是,无论在grpc中实现什么语言,行为都应该是一致的。所以grpc服务器应该能够与同一个系统进程中Node
的标准库http创建的服务器共享同一个端口。
angularjs - ngx GRPC错误解析HTTP / 2预期'P'(80)在字节0处得到'O'(79)失败
我有一个运行良好的 GRPC 服务器(使用 BloomRPC 测试)。我有一个使用 Angular 和 ngx-grpc 构建的前端。从我的 grpc 客户端发送请求时,我在服务器端收到以下错误。知道有什么问题吗?
javascript - GRPC 客户端错误:14 不可用:无法连接到所有地址
我正在尝试使用以下代码测试我的 grpc 客户端连接。我有 .net 核心 grpc 服务器并使用节点 js grpc 客户端进行连接。但是出现“无法连接到所有地址”错误。但是能够将 .net grpc 服务器连接到 .net grpc 客户端。非常感谢任何帮助。
不确定我是否遗漏了 grpc 客户端代码下方的任何内容。
我得到以下错误:
有人可以帮我解决这个问题。
python - gRPC 节点 Js 客户端:“找不到方法”
我有一个用 python 实现的 gRPC 服务器,我正在从 NodeJS 调用一个 RPC,但它给出了一个错误“找不到方法”。当我使用python客户端调用时,请求成功。
stream_csv.proto
客户端.js
服务器.py
import grpc import stream_csv_pb2 import urllib.request from urllib.error import HTTPError, URLError from concurrent import futures
错误
c# - 为什么双向流在 CompleteAsync 之前被阻塞
我不明白为什么只有使用CompleteAsync()
.
如果我以此更改结尾,我会收到消息,但在响应中下一个WriteAsync
失败,因为流已关闭。
如果我没有完成请求,响应消息永远不会出现。
任何想法 ?
注意:服务器正在运行。
javascript - grpc/javascript 中的 SBE 协议支持
我们计划使用 grpc 进行 web ui 和服务器通信。我们还打算使用 SBE 作为通信协议。在这方面我有两个问题
- 我们可以使用带有 grpc 的 SBE 协议而不是 protobuf。
- 我们是否支持 JavaScript/typescript 对 SBE 消息进行编码/解码。
感谢对此的任何指示。