TUTORIALES

Node.js desde cero para principiantes: Introducción a los streams


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