Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

98
Vistas
Obtener la cantidad de datos enviados al cliente desde la transmisión

Tengo una API Express que tiene alguna funcionalidad de descarga, implementada al canalizar una transmisión desde una llamada de fetch a res . Quiero registrar la cantidad de datos descargados, para poder rastrear los datos utilizados por cuenta. Mi implementación actual es:

 let bytesSent = 0 res.set({ 'content-length': contentLength, 'content-type': contentType, 'content-disposition': `attachment;filename="${filename}"`, }) download.body.pipe(res) download.body.on('data', (chunk) => { bytesSent += chunk.byteLength }) download.body.on('error', next) res.on('close', async () => { // Store bytesSent })

El problema con esto es (creo) que está rastreando los datos descargados de la fuente y no tiene en cuenta las restricciones de ancho de banda del cliente. Por ejemplo, si descargo un archivo de 180 MB pero cancelo la descarga en el cliente de 20 MB, todavía registra 100-180 MB.

¿Cómo puedo rastrear la cantidad de datos realmente descargados por el cliente, en lugar de los descargados/almacenados en búfer por la llamada de búsqueda?

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Puede intentar "decorar" la función res.write en sí misma y registrar los bytes que pasan por allí. Algo como:

 const origResWrite = res.write.bind(res); res.write = (chunk, encoding, callback) => { // Store byteLength of chunk somewhere - here we just log it console.log("Writing bytes of size", Buffer.byteLength(chunk)); origResWrite(chunk, encoding, callback); } download.body.pipe(res);
about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda