Node.jsIntermediate
Node.js Events (EventEmitter)
Event-driven programming, EventEmitter, emit/listen, custom events — Node.js-এর core concept বাংলায়।
12টি অংশবাংলা ভাষায়
Node.js মূলত event-driven architecture-এ কাজ করে। EventEmitter module দিয়ে custom events create ও handle করা যায়। প্রায় সব Node.js module events ব্যবহার করে।
EventEmitter কী?
EventEmitter হলো events module-এর একটি class যার মাধ্যমে আপনি event create, emit ও listen করতে পারবেন।
const EventEmitter = require("node:events");
const emitter = new EventEmitter();
// event listen করা
emitter.on("greet", (name) => {
console.log("Hello, " + name + "!");
});
// event emit করা
emitter.emit("greet", "রহিম");
emitter.emit("greet", "করিম");Custom Event System
order-system.jsjavascript
javascript
const EventEmitter = require("node:events");
class OrderSystem extends EventEmitter {}
const orders = new OrderSystem();
// events listen
orders.on("order-placed", (item) => {
console.log("✅ অর্ডার গৃহীত:", item);
});
orders.on("order-shipped", (item) => {
console.log("🚚 পাঠানো হয়েছে:", item);
});
orders.on("order-delivered", (item) => {
console.log("📦 ডেলিভারি সম্পন্ন:", item);
});
// events emit
orders.emit("order-placed", "Laptop");
orders.emit("order-shipped", "Laptop");
orders.emit("order-delivered", "Laptop");Once, Remove Listener
const EventEmitter = require("node:events");
const emitter = new EventEmitter();
// once — শুধুমাত্র একবার listen হবে
emitter.once("startup", () => {
console.log("Server চালু হয়েছে! (একবারই দেখাবে)");
});
emitter.emit("startup"); // দেখাবে
emitter.emit("startup"); // কিছু দেখাবে না
// listener remove
const handler = (data) => console.log(data);
emitter.on("data", handler);
emitter.removeListener("data", handler);
emitter.off("data", handler); // aliasError Event
যদি error event-এর কোনো listener না থাকে, Node.js process crash হয়ে যাবে। তাই সবসময় error listener রাখুন।
const emitter = new EventEmitter();
// error listener অবশ্যই রাখুন!
emitter.on("error", (err) => {
console.error("Error:", err.message);
});
emitter.emit("error", new Error("কিছু ভুল হয়েছে"));সতর্কতা
অনেক listener যুক্ত করলে memory leak হতে পারে। emitter.getMaxListeners() ও emitter.setMaxListeners(n) দিয়ে control করুন।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।