Со стороны клиента легко добавить метаданные для сервера:
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.
Соответствующие ссылки: