Los streams son una característica poderosa en Node.js que permiten leer o escribir datos de manera incremental, en lugar de cargar todo el contenido del archivo en la memoria al mismo tiempo. Esto es especialmente útil para manejar grandes volúmenes de datos de manera eficiente. Hay cuatro tipos principales de streams en Node.js: lectura, escritura, transformación y de duplex (lectura y escritura).
Aquí te muestro cómo trabajar con streams en Node.js:
1. Stream de Lectura:
Un stream de lectura es un flujo de datos que se lee desde una fuente, como un archivo o una solicitud HTTP.
const fs = require('fs'); // Crear un stream de lectura desde un archivo const readableStream = fs.createReadStream('archivo.txt', 'utf8'); // Manejar eventos de datos y fin del stream readableStream.on('data', (chunk) => { console.log('Datos recibidos:', chunk); }); readableStream.on('end', () => { console.log('Lectura del archivo completa'); });
2. Stream de Escritura:
Un stream de escritura es un flujo de datos que se escribe en una fuente, como un archivo o una respuesta HTTP.
const fs = require('fs'); // Crear un stream de escritura hacia un archivo const writableStream = fs.createWriteStream('nuevo-archivo.txt', 'utf8'); // Escribir datos en el stream writableStream.write('Hola, mundo!'); writableStream.end(); // Finalizar el stream
3. Stream de Transformación:
Un stream de transformación es un flujo de datos que se modifica mientras se transfiere de una fuente a un destino.
const fs = require('fs'); const { Transform } = require('stream'); // Transformar datos a mayúsculas const uppercaseTransform = new Transform({ transform(chunk, encoding, callback) { const data = chunk.toString().toUpperCase(); callback(null, data); } }); // Crear un stream de lectura desde un archivo y un stream de escritura hacia otro archivo const readableStream = fs.createReadStream('archivo.txt', 'utf8'); const writableStream = fs.createWriteStream('nuevo-archivo.txt', 'utf8'); // Pipe (enlazar) el stream de lectura con el stream de transformación y el stream de escritura readableStream.pipe(uppercaseTransform).pipe(writableStream);
4. Stream de Duplex:
Un stream de duplex es un flujo de datos que admite tanto la lectura como la escritura, como una conexión TCP.
const net = require('net'); // Crear un servidor TCP const server = net.createServer((socket) => { // Manejar datos recibidos socket.on('data', (data) => { console.log('Datos recibidos del cliente:', data.toString()); // Devolver los datos al cliente socket.write('Respuesta del servidor: ' + data.toString()); }); }); // Escuchar en el puerto 3000 server.listen(3000, () => { console.log('Servidor TCP iniciado en el puerto 3000'); });
Estos son solo algunos ejemplos básicos de cómo trabajar con streams en Node.js. Los streams son muy flexibles y poderosos, y se pueden utilizar en una variedad de situaciones, como procesamiento de archivos, manipulación de datos, redes, etc. Al aprovechar los streams, puedes mejorar la eficiencia y el rendimiento de tus aplicaciones Node.js, especialmente cuando se trabaja con grandes volúmenes de datos.
0 Comments:
Publicar un comentario