Node.jsIntermediate
Node.js Streams
Readable, Writable, Transform, Pipe — বড় ডেটা efficient ভাবে প্রসেস করার বাংলা গাইড।
13টি অংশবাংলা ভাষায়
Stream হলো data-কে chunk-এ ভাগ করে process করার পদ্ধতি। এটি memory-efficient — বড় ফাইল বা real-time data handle করার জন্য আদর্শ।
Stream-এর চারটি প্রকার
| Type | কাজ | উদাহরণ |
|---|---|---|
| Readable | ডেটা পড়া | fs.createReadStream, http.incoming |
| Writable | ডেটা লেখা | fs.createWriteStream, http.outgoing |
| Duplex | পড়া ও লেখা দুটোই | TCP socket |
| Transform | ডেটা রূপান্তর করে দেয় | zlib (gzip), crypto |
Readable Stream
const fs = require("node:fs");
const readStream = fs.createReadStream("large-file.txt", {
encoding: "utf8",
highWaterMark: 1024, // 1KB chunk size
});
readStream.on("data", (chunk) => {
console.log("পাওয়া হয়েছে:", chunk.length, "characters");
});
readStream.on("end", () => {
console.log("পড়া শেষ!");
});
readStream.on("error", (err) => {
console.error("ত্রুটি:", err.message);
});Writable Stream
const fs = require("node:fs");
const writeStream = fs.createWriteStream("output.txt");
writeStream.write("প্রথম লাইন\n");
writeStream.write("দ্বিতীয় লাইন\n");
writeStream.write("তৃতীয় লাইন\n");
writeStream.end("শেষ লাইন\n");
writeStream.on("finish", () => {
console.log("লেখা সম্পন্ন!");
});Pipe — Stream সংযোগ
.pipe() দিয়ে readable stream-কে writable stream-এর সাথে সংযুক্ত করা যায়। এটি chunks-কে auto-manage করে।
ফাইল copy (stream দিয়ে)javascript
javascript
const fs = require("node:fs");
const readStream = fs.createReadStream("source.txt");
const writeStream = fs.createWriteStream("destination.txt");
readStream.pipe(writeStream);
writeStream.on("finish", () => {
console.log("ফাইল কপি সম্পন্ন!");
});Transform Stream
const { Transform } = require("node:stream");
const upperCase = new Transform({
transform(chunk, encoding, callback) {
this.push(chunk.toString().toUpperCase());
callback();
},
});
const { stdin, stdout } = process;
stdin.pipe(upperCase).pipe(stdout);কখন Stream ব্যবহার করবেন
বড় ফাইল (100MB+), real-time data, বা large file processing-এ stream ব্যবহার করুন। ছোট ফাইলের জন্য readFile/writeFile সাধারণত যথেষ্ট।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।