const { pipeline } = require('node:stream');

pipeline(upstreamResponse, clientResponse, (error) => {
  if (error) console.error('Proxy response failed:', error);
});

Usa esta ruta do corpo despois da selección do destino, a petición á orixe e a preparación do estado e das cabeceiras cara ao cliente. Os fluxos de Node adoitan entregar Buffers; non os acumules nunha cadea para imaxes ou outro contido binario sen cambios.

pipeline coordina a contrapresión e propaga os fallos. Pode destruír o destino se hai un erro, así que non supoñas que despois se poida enviar outra resposta HTTP de erro. Este fragmento non é un servidor proxy completo.

Para os bytes que pasan, conserva os metadatos de representación relevantes, como o tipo de medio e a codificación do contido, e trata os campos propios de cada salto mediante regras de reenvío. Unha comparación de bytes gzip e cabeceiras de resposta coincidentes mostra a escolla entre representación codificada e descodificada.

A reescritura deliberada de HTML necesita outra ruta: recoñecer o seu tipo de medio, xestionar a compresión e o conxunto de caracteres, transformar o texto e xerar metadatos para os novos bytes. O antigo Content-Length non pode describir un corpo modificado.

Buffer.concat pode conservar contido binario cando se require almacenamento completo, pero garda todo o corpo na memoria. Un fluxo de imaxe que pasa non necesita ese custo.

Artigos relacionados