Menggunakan Stream


Node.js menyediakan modul stream yang memungkinkan Anda untuk mengirim dan menerima data secara efisien dalam bentuk aliran (streams). Streams berguna ketika Anda perlu mengolah data yang besar atau ketika Anda ingin menjalankan operasi I/O non-blocking. Berikut langkah-langkah dasar dalam menggunakan Stream di Node.js:
  1. Import Modul Stream

    Pertama, Anda perlu mengimpor modul stream ke dalam proyek Anda.

    const { Readable, Writable, Duplex, Transform } = require('stream');
  2. Membuat Readable Stream

    Anda dapat membuat Readable Stream untuk membaca data dari sumber tertentu, seperti file atau HTTP request. Berikut contoh pembuatan Readable Stream:

    const readableStream = new Readable({
     read(size) {
       // Logika untuk membaca dan mengirim data
     },
    });
  3. Membuat Writable Stream

    Writable Stream digunakan untuk menulis data ke sumber tertentu. Contoh pembuatan Writable Stream:

    const writableStream = new Writable({
     write(chunk, encoding, callback) {
       // Logika untuk menulis data
       callback();
     },
    });
  4. Menghubungkan Streams

    Anda dapat menghubungkan berbagai jenis stream untuk mengalirkan data dari satu ke yang lain. Misalnya, Anda bisa menghubungkan Readable Stream ke Writable Stream:

    readableStream.pipe(writableStream);
  5. Menggunakan Transform Stream

    Transform Stream adalah jenis khusus dari Duplex Stream yang memungkinkan Anda untuk mengubah data saat mengalirkannya dari Readable ke Writable Stream. Contoh pembuatan Transform Stream:

    const transformStream = new Transform({
     transform(chunk, encoding, callback) {
       // Logika transformasi data
       callback();
     },
    });
  6. Menangani Peristiwa

    Anda juga dapat menangani peristiwa seperti 'data', 'end', dan 'error' pada stream untuk mengontrol aliran data.

Dengan mengikuti langkah-langkah di atas, Anda dapat mulai menggunakan Stream di Node.js untuk mengelola data dengan lebih efisien. Jangan ragu untuk merinci lebih lanjut atau menanyakan pertanyaan lebih lanjut jika diperlukan!