Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

96
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!