javascript - 节点 gRPC:将元数据从服务器发送到客户端而不会出错
问题描述
从客户端,很容易为服务器添加元数据:
const meta = new grpc.Metadata();
meta.add('xyz', 'okay');
stub.service.Rpc(request, meta, (err, response) => {
});
上面可以在服务器上访问,如下所示:
call.metadata.get('xyz');
现在,如果我们需要将元数据从服务器发送到客户端,我们这样做:
const err = { code, details };
const meta = new grpc.Metadata();
meta.add('...', '...');
callback(err, null, meta);
请注意,我们正在传递错误,实际响应是null
.
如何传递null
错误和非空响应以及元数据?
如果我执行以下操作,它似乎不起作用,因为无法访问客户端上的元数据而不会出现错误。
callback(null, r, meta);
// `r` is some response message
当没有错误时,gRPC 规范是否明确禁止将元数据从服务器发送到客户端?
另外,在我们讨论的时候,我想有人解释一下我们如何在 Node.js 中从服务器向客户端发送尾随元数据和初始元数据。
相关链接:
解决方案
ServerUnaryCall.sendMetadata(responseMetadata)
服务器:
const method = (call, cb) => {
// code
call.sendMetadata(metadata)
// code
}
客户:
const call = client.method(params, cb)
call.on('metadata', (metadata) => {
// code
})
推荐阅读
- jquery - 当页面在jquery上滚动到顶部时如何制作动画?
- cuda - 是否可以在 GPU 上有效地计算具有任意插入的元胞自动机?
- flask - 从 celery 任务创建的任务被创建了两次
- c# - 使用 Windows 身份验证在 .NET Core 2.1 中扩展 IPrincipal
- node.js - 从 accessSync 返回 ENOENT 以外的值
- html-email - Outlook中的mso-line-height剪切图像
- javascript - 当我们有多个过滤器时,对数据进行“OR”操作的 angularjs 过滤器
- java - Firebase 和 RecyclerView:setter 和 switch 的问题
- node.js - 列出所有需要/导入特定文件的文件
- r - 从数据框中提取行并在 R 中作为单行输出