Ajax (Jquery) ile kullanıcının internet bağlantısını kontrol etme

Date23 / Eylül / 2008 Author İsa Engiz    Category JQuery, ajax, javascript     Tags Yorumlar5 Yorum Yapilmis.

Uzun bir aradan sonra bulduğum bu fırsatı bloga güzel bir yazı yazarak değerlendirmek istiyorum, tasarımı da yeniledik, bu güzel tasarımı, güzel bir yazı ile taçlandıralım :)

Uygulamanız da ajax kullanıyorsanız, sayfa hiç yeniden yüklenmeden işlemler yapıyorsunuz demektir. Uzun süre yüklenmeyen sayfalar, aktif işlemlerini buna rağmen devam ettiriyorlarsa, kontrol etmeniz gereken bir unsur vardır, kullanıcının internet bağlantısı!

Gmail örneğini ele alalım, sayfa yenilenmemesine rağmen arka planda ajax-post’lar akmakta ve sizin tarayıcınıza devamlı veri akışı gerçekleşmektedir. Ancak bu veri akışı, internet bağlantısının olmaması durumunda kesintiye uğrar ve google size ‘Gmail ürününne ulaşılamıyor, lütfen internet bağlantınızı kontrol ediniz!’ diye bir uyarı verir. İşte bugün biz de böyle bir uygulamanın nasıl yazılacağını tartışalım. Uygulamanın canlı haline buradan erişebilirsiniz. (ve ctrl+u ile kaynağı görüntüleyebilirsiniz!)

HTML kısmı

Uygulamamızın tüm kısımları gibi html kısmı oldukça basit;

<div id="cerceve">
 
        <h1>Ajax (Jquery) ile kullanıcının internet bağlantısını kontrol etme</h1>
 
        <div id="baglantidurumu">
            İnternet bağlantınız mevcut ve kararlı durumda.
        </div>
 
</div>

Sayfa ilk yüklendiğinde kullanıcıyı karşılayan sayfa bu şekilde, id’si ‘baglantidurumu’ olan div etiketinin icerisine, ajax ile gelen veriye göre bağlantı durumunu yazdıracağız.

Javascript ve Jquery ile kolay ajax

Jquery’nin javascript geliştirmeyi ne kadar kolaylaştırdığını bir kez daha burada görme fırsatı yakalayacağız. En kolay şekliyle bir ajax-post isteği oluşturup cevap gelip gelmediğini kontrol edeceğiz:

$(document).ready(function(){
 
    setTimeout(kontrolEt, 2000);
 
    function kontrolEt() {
		$.ajax(
		{
			type: 'POST',
			url:  'index.php',
			data : 'islem=kontrol',
			success: function(ajaxCevap)
			{
				if(ajaxCevap == 'tamam') {
					$('#baglantidurumu').html('İnternet bağlantınız mevcut ve kararlı durumda.');
					$('#baglantidurumu').css('border-top', '2px solid #9ddae6');
					$('#baglantidurumu').css('border-bottom', '2px solid #9ddae6');
					$('#baglantidurumu').css('backround-color', '#e2ecee');
				} else {
					$('#baglantidurumu').html('Şu anda sunucuya erişilemiyor.<br />Lütfen internet bağlantınızı kontrol ediniz.');
					$('#baglantidurumu').css('border-top', '2px solid #fff6bf');
					$('#baglantidurumu').css('border-bottom', '2px solid #fff6bf');
					$('#baglantidurumu').css('background-color', '#ffd324');
				}
				setTimeout(kontrolEt, 2000);
			},
			error: function()
			{
				$('#baglantidurumu').html('Şu anda sunucuya erişilemiyor.<br />Lütfen internet bağlantınızı kontrol ediniz.');
				$('#baglantidurumu').css('border-top', '2px solid #fff6bf');
				$('#baglantidurumu').css('border-bottom', '2px solid #fff6bf');
				$('#baglantidurumu').css('background-color', '#ffd324');
				setTimeout(kontrolEt, 2000);
			}
		});
	}
 
});

Bu uzun gibi görünen kod aslında oldukça basit, adım adım açıklayalım;

1- İlk önce jquery’yi başlatıyoruz:

$(document).ready(function(){

2 – Bağlantıyı kontrol edecek fonksiyonu ’setTimeout()’ ile çağırıyoruz;

setTimeout(kontrolEt, 2000);

3 – Bağlantıyı kontrol eden fonksiyon ise basit şekliyle index.php dosyasına ajax-post ile ‘istek=kontrol’ verisini yolluyor:

$.ajax(
		{
			type: 'POST',
			url:  'index.php',
			data : 'islem=kontrol',

4 – index.php dosyasından bize cevap dönerse ki bu durum ’success’ (başarı) durumu, ve bu cevap ‘tamam’ ise kullanıcının internet bağlantısı var sonucunu çıkarıp ekrana ona göre bir uyarı yazdırıyoruz; (tamam dışında bir cevap dönerse demekki bizim sunucumuz sağlıklı durumda değil!)

if(ajaxCevap == 'tamam') {
					$('#baglantidurumu').html('İnternet bağlantınız mevcut ve kararlı durumda.');
					$('#baglantidurumu').css('border-top', '2px solid #9ddae6');
					$('#baglantidurumu').css('border-bottom', '2px solid #9ddae6');
					$('#baglantidurumu').css('backround-color', '#e2ecee');
				} else {
					$('#baglantidurumu').html('Şu anda hizmet veremiyoruz.<br />En kısa sürede geri döneceğiz.');
					$('#baglantidurumu').css('border-top', '2px solid #fff6bf');
					$('#baglantidurumu').css('border-bottom', '2px solid #fff6bf');
					$('#baglantidurumu').css('background-color', '#ffd324');
				}

5- İnternet bağlantısını esas olarak kontrol eden bölüm ise ajax isteğinin gerçekleşmemesi durumu, yani ‘error’ (hata) durumu. Jquery ile bunu da çok kolay bir şekilde yakalayıp gerekli uyarıyı ekrana yazdırıyoruz:

error: function()
			{
				$('#baglantidurumu').html('Şu anda sunucuya erişilemiyor.<br />Lütfen internet bağlantınızı kontrol ediniz.');
				$('#baglantidurumu').css('border-top', '2px solid #fff6bf');
				$('#baglantidurumu').css('border-bottom', '2px solid #fff6bf');
				$('#baglantidurumu').css('background-color', '#ffd324');
				setTimeout(kontrolEt, 2000);
			}

PHP kısmı

Ajax ile veri alışverişi yaptığımız dosya, yine index.php dosyası. index.php dosyasının en başında ise şöyle minik bir kod bulunmakta:

<?php
if($_POST) {
	if($_POST['islem'] == 'kontrol') {
		echo 'tamam';
		die;
	}
}
?>

Post ile gelen bir veri varsa ve kontrol işlemi yapılıyorsa direkt olarak tamam cevabını yazdırıyoruz ve sayfanın geri kalanının çalışmasını engellemek için die() komutunu veriyoruz.

Sonuç

Görüldüğü gibi kullanıcının internet bağlantısını kontrol etmek oldukça kolay ve jquery ile bu daha da kolay oluyor.

Ajaxın en önemli avantajlarından biri, daha önceki yazılarımızda da belirttiğimiz gibi, kullanıcı ile olan etkileşimi kolaylaştırması ve arttırması. Karşı tarafın internet bağlantısını kontrol edip buna göre bilgi vermek de bu unsur açısından oldukça önemli bence.

Peki nerede kullanılabilir bu uygulama örneği? Kullanıcının kısa süre kalacağı sayfalarda kullanılamaz tabii ki, gereksiz yere sunucuya veri akışı gerçekleşecek. Ayrıca bu açıdan değerlendirdiğinizde bu uygulamada verdiğimiz 2000 ms süresini de arttırmak doğru olabilir. Bir diğer doğru hareket de, bağlantı kontrolünü, kullanıcının uzun süre kalmasını planladığınız sayfalarda yapmak.

Bir sonraki ajax yazısında görüşmek üzere!

Not: jquery-ajax işlemleri ile ilgili bilgileri eburhanın bu sayfasından alabilirsiniz.

- Bu blogda yer alan yazıları RSS ile takip edebilirsiniz. RSS aboneliği için tıklayın.

- Ya da bu blogda yer alan bütün yazıları içindekiler sayfasında görüntüleyebilirsiniz. Tıklayın!

Ajax (Jquery) ile kullanıcının internet bağlantısını kontrol etme yazısına 5 Yorum yapılmış.

  • oyyla.com 24 Eylül 2008, 08:57

    Ajax (Jquery) ile kullanıcının internet bağlantısını kontrol etme…

    Kullanıcının internet bağlantısının olup olmadığı nasıl kontrol edilir, bu yazıda…….

  • NeTHaLiL 24 Eylül 2008, 11:42

    Güzel bir paylaşım olmuş, AJAX ile her geçen gün yeni şeyler öğrenmek ve uygulamak yenilikleride beraberinde getiriyor.

  • İsa Engiz 24 Eylül 2008, 20:38

    Teşekkürler.

  • » Web derleme #5 Guncel-farkli blog 28 Eylül 2008, 03:33

    [...] Tasarımında Yapılan 5 Hatakonu başlığı ile blog sitelerinde yapılan 5 hatayı yazmış. 5.Ajax (Jquery) ile kullanıcının internet bağlantısını kontrol etme konusuyla ajax’da internet bağlantısını nasıl kontrol edildiğini [...]

  • mirc 09 Ocak 2009, 11:25

    tskler

görüşünü belirt

Spam Protection by WP-SpamFree

Arama


E-Posta Aboneliği


RSS Aboneliği

En Çok Yorumlanan Yazılar

Etiketler

404 ajax apache arama butonu as astrofizik açık kaynak banner blogger blogger/blogspot Blogger / Blogspot blogspot case chmod css date dosya yükleme editör etiket etkinlik favicon featured form ftp galeri Genel gimp hata sayfası header htaccess htpasswd ilişkisel veritabanı index innodb javascript join JQuery kategori koodla linux mysql opacity php resim url

Son Yorumlar

  • isa engiz: Yazı için teşekkürler. sabit ip 2.75 tl. bu ücreti verip kendi web sunucumuzu kurabiliriz… En yakın...
  • osman: Yazı için teşekkürler. Pardus projesinin Türkiye için çok önemli olduğunu düşünüyorum. Ancak yazıda da...
  • Mustinet: siblings kullanarak da yazılabilir. Teşekkürler
  • is: CSS kullanmadan sadece HTML kodlarıyla yanyana iki sütun (tablo kullanmadan) oluşturulabilir mi?
  • Doğan Yılmaz: verdiğiniz bilgiler için çok ama çok teşekkür ederim. artık sıkı bir takipçiniz olmaya karar verdim

Sayfalar


Faydalı Bağlantılar