folder Tahribat.com Forumları
linefolder Html - CSS - XML - JavaScript - Ajax
linefolder Real Time Uygulamalar İçin Web Socket



Real Time Uygulamalar İçin Web Socket

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Hocalarım Real Time Uygulamalar için web socket namı değer Socket.io dan bahsedeceğim..

    ---Bilgi Seviyem üst düzey olmadığı için söyleyeceklerimde kesinlik yoktur!---

    Socket.io Node JS içerisinde bir modül. NodeJS nin bir çok modülü var MONGODB gibi Json'a benzer yapısı olan veritabanını da içerisinde kullanabiliyorsunuz keze MySQL MSSQL de buna dahil 

    Node JS Kurulumunu internetten bakabilirsiniz ekstra bir soru olursa konu altına veya pm den sorarsanız cevaplarım.

    Node JS Kurduktan sonra NodeJS CMD açın ve uygulamayı geliştireceğiniz klasörün içerisine npm init yazın (Projenizin Özelliklerinin JSON çıktısı) Daha sonra burdan Proje isiminizi Yazan kişi veya kişileri girin. bilgileri doldurduktan sonra Package.json adlı dosya içerisinde şunları ekleyin.

     "dependencies":{
      "socket.io":"*",
      "express":"*"
      
      }

    Versiyonlama işleri çok önemli benim son versiyon olduğu için bütün paketlerin son versiyonunu yüklüyorum. Bazı versiyonlar NodeJs nin versiyonuna uyuşmuyor dikkat edin.

    bunu ekledikten sonra cd Klasör yeri Örn cd C:\xampp\htdocs\LearnToWebSocket deyin daha sonra

    npm install demeniz yeterli olacaktır. 2 adet paket yüklenecek klasörünüzün içerisinde node_modules adlı klasör yüklenmesi lazım.

    Kafamda bir algoritma kurguladım genelde bu gibi olayları günlük yaşantıma uyarlayarak algoritmik sistemi çözüyorum. Şimdi kafamdaki algritma şu. Bir server var birde Client. Server dediğimiz bizim Reisimiz. Client de bizim gibi gereksizler. Bilgileri Reis'e soruyoruz yani Server'a. Şimdi Reisimizi oluşturalım..

    cd ile gösterdiğiniz klasörün içerisinde Server.js adlı bir dosya oluşturun isminizi kafanıza göre verebilirsiniz.. ve İçerisinde şu kodu yazalım..

    var app = require('express')();
    var http=require('http').Server(app);
    
    var io=require('socket.io')(http);
    
    
    app.get("/",function(req,res){
    	
    	res.sendfile(__dirname+"/index.html");
    	
    	
    });

     

    require komutu bildiğiniz üzere PHP de ekleme yani kütüphane ekleme komutu require diyerek 2 adet kütüphaneyi programımıza ekliyoruz... res.sendfile dediğimiz şeyi bende çözemedim BİLGİLİ MÜRİT VARSA AÇIKLAYABİLİR. Burda php dosya yolunu gösterince php dosyasını indiriyor. res.sendfile bizim serverimizin çalıştığı dosya yani html dosyası. Php sorununu çözmem lazım biri açıklarsa çok güzel olur..

    var port=2012;
    http.listen(port,function(){
    	console.log(port+". port dinlenmektedir..");
    });

     

    http.listen methodunu yazdıktan sonra bulunduğunuz klasöre index.html adlı bir html dosyası açın. 

    CDM den node server.js yazdıktan sonra hemen altta .... port dinlemektedir.. yazması gerekir. Port dinlenilmeye başlandığında Server.js adlı klasöre şu kodu yazalım

    io.on('connection',function(socket){
    
    console.log("Bir kişi Bağlandı ID = "+socket.id);
    
    socket.on('disconnect',function(){
    
    console.log("Porttan bir kişi ayrıldı"+socket.id);
    
    });
    
    });

     

    Kodu yazdıktan hemen sonra index.html klasörünün içerisinde şu Script'i yazalım..

    <script  src="/socket.io/socket.io.js"></script>
        <script>
    	var socket=io();
       </script>

     

    socket dediğimiz bizim server'a bağlandığımız obje bu objeyi kullanarak reis'e soru sorup veya reis'e itaat edebiliriz. yani emirlerini yerine getirebiliriz. 

    Tarayıcıyı acıp localhost:(PORT NUMARASI) yazdıktan sonra CMD ekranında bir kişi bağlandı ... id diye bir ibare görürseniz bağlantımız çalışıyor. Keza tarayıcıyı kapattığımızda da aynı şekilde bir kişi ayrıldı ... id 'li gibi ibare görürseniz bağlantı ve porttan cıkma işlemi gerçekleşiyor demektir...

     

    Bağlantıyı gerçekleştirdikten sonra gelelim Reis'e soru sormaya ve Reis'in emirlerini yerine getirmeye...

     

    Socket.emit("---Reis'e Sorduğumuz Sorumuzun İsmi---",(--Sorumuzun Verileri--));

    Mesela birine soru sorarsınız ya Kankiiii baksana bu elmanın rengi nedir ? diye 

    Sorumuzun ismi "nedir" Sorumuzun verileri de "elma" oluyor . Algoritmasını bu şekilde oluşturuyorum ben..

    yani Socket.emit("GirisYaptim",{KullaniciAdi:"MhmdAlmz",Sifre:"1453Osmanli"});

    diye bir kod ile reis'le konuşabiliriz. Reis de bize cevabını şu şekilde veriyor.

     

     

    Socket.on("---Sorulan Sorunun Ismi---",function(Values){
    
    //Yapilacak işlemler
    
    });

    Values bizim Verilerimiz oluyor. Socket.on methodunu da Server.js dosyamıza yazıyoruz. Reis'in cevap vermesi için.

    Şöyle bir Kod Bloğu ekleyelim

     

     

    Socket.on("GirisYaptim",function(Values){
    
    Values=JSON.parse(Values);
    
    console.log("Hoş Geldin "+Values.KullaniciAdi)
    
    });
    
    

    Bu kod reisin bize GirisYaptim reis dedikten sonra nelerin gerçekleşeceğini gösterir. function kısmına yaplıacak işlemleri yazdıktan sonra Reis'e (Server'a) soru sorup cevaplama kısmını çözdük... Şimdi gelelim ek bilgiye..

    Socket dediğimiz şey Herhangi bir cihaz , tarayıcı vs. bir yerden Serverimizin ..... portuna bağlanan Socket'in bilgileri. Bu socket'e kişisel olarak soru yöneltiyoruz. Yani Reis'in herkese ne yapıyorsunuz diye bir soru sorması için tüm socketleri tek tek almanız ve soruyu yöneltmeniz gerekiyor. var sockets =io.sockets.sockets; dedikten sonra Server'a iletişime geçen bütün socketlerin bilgilerini array olarak veriyor. daha sonra socket.emit diyerek soru sorabilirsiniz client tarayında da bu soruya cevap olarak Socket.on methodunu kullanabilirsiniz. Bütün dillerde aynı şekilde geçiyor fakat kullanımları farklı Android tarfında bir Listeneer ile çözüyoruz html JavaSCript tarafında direk function diyerek bitiriyoruz işi... Sinyalizasyon işlemlerini de çözdükten sonra bir makale daha yazarım... Loop yaparak server tarafında sürekli bir soru sorabiliriz. Bu sayede Whatsapp'ın yaptığı gibi Yazıyor.. Çevrimiçi Çevrimdışı gibi ibarelerini kullanabiliriz. Real Tİme app yazabiliriz. Socket.io'nun bize verdiği nimetler bu kadar değildir elbette bunlar daha başlangıç ilerde üstüne koydukça geleceğim buraya . Şuan NodeJS'i aldığımız sanal sunucuda nasıl çalıştıracağımı bilmiyorum yani yazdığımız Php dosyasında bildirim sistemi yapacaksak o dosyada nasıl çalıştıracağımızı bilmiyorum. Örneğin Header.php de Bildirim bölümü olsun. Buraya yazdığımız socket'i nasıl çalıştıracağımızı bilmiyorum port'lar farklı ve muhtemelen php dosyasında çalışmayacak res.sendFile methodunda bi değişiklik yapmak gerekebilir. Kalın sağlıcakla :) Çözdükten sonra konu altına yazarım onu da çözmüş oluruz...

     

     

    Iyi Gerçek Zamanlı Uygulama yazmalar :)

     

     

     

    Mod not. Konu taşındı, konuları doğru kategorilere açmaya özen gösterelim. 

     

     

     

     

     

     


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Hazır konu açılmışken aldığımız hosting üzerinde nasıl çalıştıracağımızı da söylesin bi mürit yani php dosyasının içerisinde socket.io nasıl bağlanacağımızı söylesin hiç de fena olmaz yani :)

    NOT :Biri konumun üstünde hit botunu deniyor galiba :/


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Cosmic
    Cosmic's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    direk hosting üzerinde çalıştıramazsın. ssh ile bağlanabildiğin bir şey lazım vps vds dedicated falan


    Bittik biz bittik
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    @Cosmic , Halledildi hocam :) Teşekkürler ilgin için :) bitince ek bilgi olarak eklerim :)


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
Toplam Hit: 1234 Toplam Mesaj: 4
javascript socket.io