Mi servidor express
app.get('/data', (_, res) => { const interval = setInterval( () => res.write(`${Math.random().toString()}\n`), 1000 ); res.on('close', () => { clearInterval(interval); res.end(); }); });Mi lado del cliente
const res = await fetch('/data') const reader = res.body.getReader() reader.read().then(data => { const { value, done} = data; console.log(value); })Todo funciona bien, los datos se transmiten cada segundo y se registran. Sin embargo, cada vez que actualizo la página o la cierro, el lado del servidor comienza a llenar mi espacio en disco a una velocidad de 100 MB/segundo.
Lo mejor de mi suposición es que un solo número aleatorio no puede coincidir con 100 MB.
Su código del lado del cliente lee solo una parte de los datos del servidor para que el búfer del lado del servidor se llene cada segundo (¿aunque no por 100 MB?). ¿Sigue ocurriendo el problema si reemplaza el código del lado del cliente con
const res = await fetch('/data'); const reader = res.body.getReader(); while (!await reader.read().then(function({value, done}) { console.log(value); return done; }));?
Lo intenté nuevamente en diferentes máquinas y puedo concluir que la razón de esto son los errores de Google Cloud Shell. No tiene nada que ver con Docker o ExpressJs.