#fastify
#быстрая обработка
Вопрос:
Моя цель — манипулировать полезной нагрузкой ответа после того, как ответ уже возвращен клиенту, но, похоже, это невозможно сделать с помощью fastify fastify-reply-from, не влияя на время ответа. Вот единственный способ, которым я мог бы получить тело ответа и что-то с ним сделать.
fastify.addHook('onSend', async (req, reply, payload) => {
return new Promise((resolve, reject) => {
const chunks = [];
payload.on('error', reject);
payload.on('data', (chunk) => {
chunks.push(chunk);
});
payload.on('end', () => {
const body = Buffer.concat(chunks);
doSomethingWithBody(body);
resolve(body);
});
});
Существуют ли другие способы сделать это, не обрабатывая поток вручную (полезная нагрузка — это экземпляр «IncomingMessage»)?
Комментарии:
1. Ваше решение в порядке, и вы не можете избежать обработки потока, поскольку вам нужно его изменить
2. Спасибо, я подумал, может быть, я смогу каким-то образом «дублировать» поток, поэтому один из них будет отправлен в качестве ответа клиенту, другой будет обработан для внутреннего использования (например, ведение журнала)