‫Instruktur: Aliran adalah konsep mendasar lainnya di
‫Node.js. JS.
‫Jadi sekarang mari kita pelajari semua tentang mereka.
‫Jadi pertama-tama, apa itu stream?
‫Nah, dengan stream kita bisa memproses artinya membaca dan menulis
‫data sepotong demi sepotong tanpa menyelesaikan seluruh operasi
‫baca atau tulis.
‫Oleh karena itu kita tidak perlu menyimpan semua data
‫dalam memori untuk melakukan operasi ini.
‫Misalnya, ketika kita membaca file menggunakan
‫stream, kita membaca sebagian data, melakukan
‫sesuatu dengannya, lalu mengosongkan memori, dan mengulanginya hingga seluruh
‫file diproses.
‫Atau pikirkan YouTube atau Netflix,
‫yang keduanya disebut perusahaan
‫streaming karena streaming video menggunakan prinsip yang sama.
‫Jadi, alih-alih menunggu hingga seluruh file video dimuat,
‫pemrosesan dilakukan sepotong demi sepotong atau sepotong-sepotong
‫sehingga Anda dapat mulai menonton bahkan sebelum seluruh
‫file diunduh.
‫Jadi prinsipal di sini bukan hanya tentang Node.js. JS.
‫Tapi universal untuk ilmu komputer pada umumnya.
‫Jadi seperti yang Anda lihat, ini menjadikan streaming kandidat yang
‫sempurna untuk menyerahkan data dalam jumlah besar seperti
‫misalnya, video atau juga data yang kami terima sepotong demi
‫sepotong dari sumber eksternal.
‫Selain itu, streaming membuat pemrosesan data lebih efisien
‫dari segi memori karena tidak
‫perlu menyimpan semua data di memori dan juga dari
‫segi waktu karena kita bisa mulai memproses data
‫saat tiba, daripada menunggu sampai semuanya tiba.
‫Oke, jadi sekarang kita tahu apa itu stream,
‫mari kita bicara sedikit tentang bagaimana implementasinya di
‫Node.js. JS.
‫Jadi di Node, ada empat jenis aliran dasar: aliran
‫yang dapat dibaca, aliran yang dapat ditulis, aliran
‫dupleks, dan aliran transformasi.
‫Tetapi yang dapat dibaca dan ditulis
‫adalah yang paling penting.
‫Jadi kita akan lebih fokus pada keduanya.
‫Jadi aliran yang dapat dibaca adalah aliran yang darinya kita dapat membaca.
‫Kita bisa mengkonsumsi data, masuk akal kan?
‫Sekarang aliran ada di mana-mana di modul inti Node.
‫Jadi agak seperti acara, seperti yang kita bicarakan sebelumnya.
‫Misalnya, data yang masuk saat server http mendapat
‫permintaan sebenarnya adalah aliran yang dapat dibaca.
‫Jadi semua data yang dikirim dengan permintaan datang sepotong
‫demi sepotong dan tidak dalam satu bagian besar.
‫Juga contoh lain dari sistem file adalah
‫kita dapat membaca file sepotong
‫demi sepotong dengan menggunakan layar baca dari modul
‫FS, yang sebenarnya bisa sangat berguna untuk file teks besar.
‫Baiklah, sekarang hal penting lainnya yang
‫perlu diperhatikan adalah bahwa stream sebenarnya adalah
‫instance dari kelas EventEmitter.
‫Artinya semua aliran dapat memancarkan dan mendengarkan
‫peristiwa bernama.
‫Sama seperti yang kita pelajari di kuliah terakhir.
‫Dalam hal aliran yang dapat dibaca, mereka dapat memancarkan,
‫dan kami dapat mendengarkan banyak acara berbeda.
‫Tetapi dua yang paling penting adalah data dan peristiwa akhir.
‫Peristiwa data dipancarkan ketika ada bagian data
‫baru untuk dikonsumsi,
‫dan peristiwa akhir dipancarkan segera setelah tidak
‫ada lagi data untuk dikonsumsi.
‫Dan tentu saja, kita kemudian dapat bereaksi
‫terhadap peristiwa ini sesuai dengan itu.
‫Dan sebenarnya kita akan melakukan hal itu di video berikutnya.
‫Jadi untuk berlatih bagaimana bekerja dengan aliran.
‫Terakhir, selain event, kita juga memiliki fungsi penting yang bisa
‫kita gunakan di stream.
‫Dan dalam kasus aliran yang
‫dapat dibaca, yang paling penting adalah pipa dan fungsi baca.
‫Dan sekali lagi, Anda akan melihat ini beraksi di
‫video berikutnya, terutama fungsi pipa yang sangat
‫penting, yang pada dasarnya memungkinkan kita menyambungkan aliran bersama-sama,
‫meneruskan data dari satu aliran ke
‫aliran lainnya tanpa harus terlalu mengkhawatirkan peristiwa sama sekali.
‫Oke, selanjutnya, aliran yang dapat ditulis adalah aliran yang
‫dapat kita gunakan untuk menulis data.
‫Jadi pada dasarnya, kebalikan dari aliran yang dapat dibaca.
‫Contoh yang bagus adalah respons http yang dapat kami kirim kembali ke
‫klien dan yang sebenarnya merupakan aliran yang dapat ditulisi.
‫Jadi aliran tempat kita bisa menulis data.
‫Jadi ketika kita ingin mengirim data, kita harus menuliskannya di suatu
‫tempat, bukan?
‫Dan itu di suatu tempat adalah aliran yang dapat ditulis,
‫dan itu masuk akal, bukan?
‫Misalnya, jika kami ingin mengirim file video besar
‫ke klien, kami akan mengalirkan
‫hasil itu seperti yang dilakukan Netflix atau YouTube.
‫Sekarang tentang event, yang terpenting adalah
‫event drain dan finish.
‫Dan fungsi yang paling penting
‫adalah fungsi tulis dan akhir, beberapa
‫di antaranya akan Anda lihat beraksi di kuliah berikutnya.
‫Sekarang cepat tentang aliran dupleks.
‫Mereka hanyalah aliran yang dapat dibaca dan ditulis pada
‫saat yang bersamaan.
‫Ini agak kurang umum.
‫Tapi bagaimanapun, contoh yang baik adalah soket web
‫dari modul net.
‫Dan soket web pada dasarnya hanyalah
‫saluran komunikasi antara klien dan server yang bekerja
‫dua arah dan tetap terbuka setelah koneksi dibuat.
‫Akhirnya, transformasi stream adalah aliran dupleks, jadi
‫aliran yang dapat dibaca dan ditulis, yang pada
‫saat yang sama dapat mengubah
‫atau mengubah data saat dibaca atau ditulis.
‫Contoh bagus dari yang satu ini adalah
‫modul inti zlib untuk mengompresi data yang sebenarnya menggunakan aliran transformasi.
‫Baiklah, dan itulah empat jenis aliran
‫dan gambaran umum tentang bagaimana kita dapat menggunakannya.
‫Sekarang ada sesuatu yang penting
‫untuk disebutkan di
‫sini sebelum kita melanjutkan, yaitu fakta bahwa peristiwa
‫dan fungsi yang saya tunjukkan ini adalah untuk
‫menggunakan aliran yang sudah diimplementasikan seperti yang
‫saya tunjukkan di sini sebagai contoh kami.
‫Jadi misalnya, Node mengimplementasikan permintaan dan tanggapan http ini
‫sebagai aliran, dan
‫kemudian kita dapat mengkonsumsinya, kita dapat menggunakannya
‫menggunakan peristiwa dan fungsi yang tersedia
‫untuk setiap jenis aliran.
‫Tentu saja kita juga dapat mengimplementasikan aliran kita
‫sendiri dan kemudian mengkonsumsinya menggunakan peristiwa dan fungsi yang sama ini.
‫Namun itu akan menjadi video untuk lain waktu
‫karena untuk membangun sebagian
‫besar aplikasi, yang paling penting adalah mengetahui cara
‫benar-benar menggunakan streaming, bukan cara mengimplementasikannya.
‫Baiklah, jadi sekarang mari kita lanjutkan dan
‫benar-benar menggunakan aliran dalam praktik.