Javascript 节点gRPC:无错误地将元数据从服务器发送到客户端
从客户端,很容易为服务器添加元数据:Javascript 节点gRPC:无错误地将元数据从服务器发送到客户端,javascript,node.js,grpc,grpc-node,Javascript,Node.js,Grpc,Grpc Node,从客户端,很容易为服务器添加元数据: const meta = new grpc.Metadata(); meta.add('xyz', 'okay'); stub.service.Rpc(request, meta, (err, response) => { }); 可以通过以下方式在服务器上访问上述内容: call.metadata.get('xyz'); 现在,如果我们需要将元数据从服务器发送到客户端,我们可以执行以下操作: const err = { code, detail
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
错误和非null响应以及元数据
如果我执行以下操作,它似乎不起作用,因为如果没有错误,就无法访问客户端上的元数据
callback(null, r, meta);
// `r` is some response message
gRPC规范是否明确禁止在没有错误时将元数据从服务器发送到客户端?
另外,在我们进行讨论时,我希望有人解释一下如何将跟踪元数据和初始元数据从服务器发送到节点中的客户端
相关链接:
client.someFunction().on('metadata', (meta) => { /* any code */ })
至少在v0.9.x上,您可以看到:
服务器:
const method = (call, cb) => {
// code
call.sendMetadata(metadata)
// code
}
客户:
const call = client.method(params, cb)
call.on('metadata', (metadata) => {
// code
})