Memahami dan Menggunakan Streams di Node.js

dani indra

Memahami dan Menggunakan Streams di Node.js

Dalam pengembangan aplikasi Node.js, streams adalah konsep fundamental yang memungkinkan penanganan data secara efisien dan dapat meminimalkan penggunaan memori. Dalam artikel ini, kita akan menjelaskan konsep streams, jenis-jenisnya, dan cara menggunakannya di Node.js.

Apa itu Streams?

Streams adalah serangkaian data yang dikirim dari satu tempat ke tempat lain. Mereka memungkinkan untuk membaca atau menulis data dalam potongan-potongan kecil, sehingga tidak perlu menunggu seluruh data tersedia sebelum memprosesnya. Streams sangat efisien untuk menangani data besar atau streaming data secara real-time.

Jenis-Jenis Streams di Node.js

Node.js menyediakan empat jenis streams:

  1. Readable Streams: Menghasilkan data yang dapat dibaca oleh stream.
  2. Writable Streams: Menerima data yang dapat ditulis ke dalam stream.
  3. Duplex Streams: Kombinasi dari Readable dan Writable streams. Memungkinkan untuk membaca dan menulis data.
  4. Transform Streams: Bentuk khusus dari Duplex streams yang dapat memanipulasi atau mengubah data saat melewati stream.

Menggunakan Readable Streams

Readable streams adalah streams yang memungkinkan untuk membaca data dari suatu sumber. Contoh sumber data dapat berupa file, permintaan HTTP, atau bahkan pembuat data secara dinamis.

Contoh Membaca File dengan Readable Stream

const fs = require('fs');

const readableStream = fs.createReadStream('file.txt', 'utf-8');

readableStream.on('data', (chunk) => {
  console.log('Membaca potongan data:', chunk);
});

readableStream.on('end', () => {
  console.log('Pembacaan selesai.');
});

readableStream.on('error', (err) => {
  console.error('Terjadi kesalahan:', err);
});

Menggunakan Writable Streams

Writable streams adalah streams yang memungkinkan untuk menulis data ke suatu tujuan. Contoh tujuan data dapat berupa file, permintaan HTTP, atau lokasi penyimpanan lainnya.

Contoh Menulis Data ke File dengan Writable Stream

const fs = require('fs');

const writableStream = fs.createWriteStream('output.txt', 'utf-8');

writableStream.write('Tulisan pertama.\n');
writableStream.write('Tulisan kedua.');

writableStream.end();

writableStream.on('finish', () => {
  console.log('Penulisan selesai.');
});

writableStream.on('error', (err) => {
  console.error('Terjadi kesalahan:', err);
});

Menggunakan Transform Streams

Transform streams adalah jenis streams yang dapat memanipulasi atau mengubah data saat melewati stream. Mereka berguna ketika Anda perlu mengubah format data atau melakukan operasi lainnya saat membaca atau menulis.

Contoh Transform Stream: Uppercase

const { Transform } = require('stream');

const uppercaser = new Transform({
  transform(chunk, encoding, callback) {
    this.push(chunk.toString().toUpperCase());
    callback();
  }
});

process.stdin.pipe(uppercaser).pipe(process.stdout);

Dalam contoh ini, input dari process.stdin akan diubah menjadi huruf besar oleh transform stream (uppercaser) dan kemudian ditampilkan ke process.stdout.

Kesimpulan

Streams di Node.js adalah alat yang sangat berguna untuk mengelola data secara efisien. Dengan menggunakan readable streams, writable streams, dan transform streams, Anda dapat mengontrol alur data dan menghindari penggunaan memori yang berlebihan saat menangani data besar. Pahami jenis-jenis streams yang tersedia dan pilih jenis yang sesuai dengan kebutuhan aplikasi Anda. Streams adalah salah satu fitur yang membuat Node.js kuat dalam menangani tugas-tugas I/O yang intensif. Selamat menggali lebih dalam ke dalam dunia streams di Node.js!

Leave a Comment