Node.js Üzerine – 3. Bölüm (Eventler)

 

Merhaba dostlar, bugün sizinle node.js üzerine konuşmaya devam edeceğiz. Yazının başlığından anlayacağınız üzere eventler üzerine gideceğiz. İlk dersimizde Node.js nin event tabanlı bir dil olduğundan bahsetmiştik, bu şekilde çok güçlü bir serverside dili olabilmekteydi. Bunun asıl sebebi de sadece bir thread ile çalışması ama hiç bir aksiyonun bloklanmaması bu yolla uzun sürecek aksiyonlar (dosya yükleme, dosya upload, web server başlatma gibi…) arka planda işlerini halletmeye devam ediyor tamamlandığında ise bir callback fonksiyonu çağırılıyor.

Şimdi eventleri nasıl nasıl oluşturacağımızı ve dinleyeceğimizi konuşmaya başlayabiliriz.

Eventleri dinleme:

Bildiğimiz bir modülün eventlerini dinlemekle başlayacağız. Http modülünü ilk derslerde kullanmıştık, şimdi bu modülün eventlerinden olan “close” eventini dinleyelim, yani webserverımızı durdurduğumuzda çalışacak bir event bu.

Dinleme işini ise .on() metodu ile yapıyoruz. Ufak bir örnek verelim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var http = require('http');

var server = http.createServer(function(req, res) {
res.writeHead(200);
res.end('Hello Universe!');
});

server.on('close', function() {

console.log('Server Kapandı, Güle Güle');
})

server.listen(8080);

server.close();

Yukarıdaki kodun ilk bölümde verdiğimiz örnekle tek farkı aslında .on() metodunu eklemiş olmamız dostlar, server değişkenimizin close eventini dinledik ve event tamamlandığı zaman ise “Server Kapandı, Güle Güle” mesajımızı yazdırdık.

Bir event i birden fazla kez dinleyebiliyoruz, .on() fonksiyonunu aynı metodumuz için iki kere çalıştırırsak da event gerçekleştiğinde iki callback alacağız demektir bu.

Eventler oluşturmak (event emitting):

Eventler oluşturmak için EventEmitter modülünü kodumuza eklememiz gerekiyor, sonrasında ise bir Event Emitter objesi oluşturuyoruz. Programımızda nasıl yaptığımıza bakalım:

1
2
3
var EventEmitter = require('events').EventEmitter;

var music = new EventEmitter();

Yukarıda göreceğiniz üzere ilk satırda modülümüzü ekledik. İkinci satırda ise “music” adında bir object oluşturduk.

Bir event i emit etmek için tek yapmamız gereken artık; oluşturduğumuz objectimiz .emit() fonksiyonumuz ile çağırmak.

Objectimizi emit ettiğimiz zaman, alacağı değerler şunlar olacak:

1- oluşturmak ve kontrol etmek istediğimiz event’in adı,
2- bir veya birden fazla event ayarı.

Şimdi ufak bir örnek ile ne demek istediğimi daha iyi anlayalım.

1
2
3
4
5
6
7
8
9
var EventEmitter = require('events').EventEmitter;

var music = new EventEmitter();

music.on('yeniSanatci', function(message){
console.log(message);
});

music.emit('yeniSanatci', 'Ahmet Kılınç', 25);

Yukarıdaki örneğimizde bir üstte de anlattığım gibi bir EventEmitter objesi oluşturduk (music). Sonrasında bu objeye .on() fonksiyonu ile hangi eventi dinleyeceğini söyledik (yeniSanatci). En altta .emit() fonksiyonu ile ise objemizin dinleyeceği eventi oluşturduk (yeniSanatci).

Dostlar bugün node.js‘nin en önemli kısımlarından biri olan eventler hakkında konuştuk. Bu daha başlangıç olduğu için basit örnekler ile anlatmaya çalıştım. İleriki bölümlerde daha karmaşık eventlerle döneceğim, söz veriyorum. Şimdilik dikkat edin kendinize.

ahmet

Ahmet Kılınç - Software Developer

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.