Django ve Socket.io ile Gerçek Zamanlı Uygulamalar – 1. Bölüm

Merhabalar,

Bu hafta sizlere django ile socket.io kullanımından bahsedeceğim.
HTML5 ile websocket’lerin standart olmasına karşın şu an django kurulduğu haliyle bu desteği sağlamamaktadır. Bu desteği eklememiz için farklı bir wsgi kullanmamız gerekmektedir. Çok ayrıntıya girmeden hızlıca örneklere geçmek istiyorum. Bu terimlerle ilgili döküman sayısı oldukça fazla, fakat internet üzerinde bulunan örnek kodlar djangonun son sürümü ile düzgün çalışmamaktadır.

Hızlıca örneğimize geçelim.
İstemci tarafı:
İstemci tarafında kullanacağımız socket.io kütüphanesi hayatımızı oldukça kolaylaştırıyor. Burada ki yapıyı IRC’ye benzetebiliriz. Öncelikli olarak bir sunucuya bağlanıyoruz. Ardından da istediğimiz kanalı seçiyoruz. Socket.io ile yapacağımız bağlantı da aynı bu şekilde çalışıyor.

Kod örneğimiz şöyledir.

/*
Bağlantıyı sayfayı çektiğimiz sunucuya açıyoruz. Ve bağlantıyı açarken hangi kanala bağlanacağımızı belirtiyoruz. Birden fazla kanala bağlanmamız da mümkün, ama basitlik için buna değinmeyeceğim.
*/
var socket = io.connect('/chat');

/*
Mesajlaşma sırasında mesajlarımızı ayırt edebilmemiz için etiketler kullanılıyor. Bu işi socket.io bizim için arka planda otomatik olarak yapıyor. Mesajlar içersinde bulunan bu etiketlere göre socket.on() metodunu kullanarak kaydettiğimiz 'callback' fonksiyonlarımız çalıştırılıyor.

Burada socket.connect() fonksiyonu ile başlattığımız bağlantı işlemi tamamlandığında yapılması gerekenleri tanımlıyoruz. Bu örnek kapsamında istemci bağlantı işlemini tamamladıktan sonra bir kayıt isteği gönderiyor.
*/
socket.on("connect", function(){
console.log('bağlandı>');
/* Kayıt olma isteği gönderiyoruz */
socket.emit('subscribe' , {'me': 'mynick'});
console.log('kayıt yapıldı.');
});

/*
Burada sunucudan gelecek 'welcome' etiketli mesajların hangi fonksiyon ile işleneceğini belirtiyoruz. Mesajımızın içeriği obj parametresi ile fonksiyonumuza geçiriliyor.
*/
socket.on("welcome", function(obj){
console.log('Merhaba mesajı geldi. Mesaj içeriği: ' + obj);
});

/*
Kayıt işlemimiz tamamlandıktan sonra sunucu tarafından gönderilen message etiketli mesajları işliyoruz.
*/
socket.on("message", function(obj) {
console.log('Yeni mesaj geldi. Mesaj içeriği: ' + obj);
});

Bu yazının ikinci bölümünde sunucu tarafına değineceğim.

İyi haftalar

Tagged with: ,
Posted in yakindanegitim

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
%d bloggers like this: