NODEJS

ExpressJS ve Socket.io

NODEJS NEDİR?

Yüksek performanslı ve ölçeklenebilir ağ programlarını yazmanızı kolaylaştıran bir Javascript çalıştırma ortamıdır.

ÖZELLİKLERİ

  • Google'ın V8 Javascript Motoru
  • NPM Paket Yöneticisi
  • Olay Bazlı Yapı Oluşturma
  • Asenkron I/O İşlemleri

AVANTAJLARI

  • Asenkron Olay Bazlı
  • Client-side'da ve Server-side'da Aynı Kodu Kullanabilme
  • Aktif Bir Topluluk
  • Büyük Boyutlu Dosyaları Yayınlayabilme

NELER YAPILABİLİR?

  • Sohbet Sistemi
  • HTTP Sunucu
  • FTP Sunucu
  • DNS Sunucu
  • Veri Yayınlama
  • Reklam Sunucusu
  • Gerçek Zamanlı Sosyal Platform
  • Stok Takip Yazılımları

NEDİR BU ASENKRON?

Okuma ve yazma işlemlerinin işletim sistemi yardımıyla ayrı bir kuyruğa alınmasıdır.

Kısaca, kodlarımız çalışırken disk yüzünden oluşan beklemelerden kurtulmamıza olanak sağlar.

TEK SENKRON İŞLEM

ÇOKLU SENKRON İŞLEM

ÇOKLU ASENKRON İŞLEM

NODEJS ASENKRON İŞLEM ÖRNEĞİ

const fs = require('fs')

console.log('Dosyayı okumaya başla!')

fs.readFile('deneme.txt', 'utf-8', function(err, content) {
  if(err) {
    console.log('Dosya okunurken bir hata oluştu!')
  } else {
    console.log(content)
  }
})

console.log('Dosya okuma bitti!')
Dosyayı okumaya başla!
Dosya okuma bitti!
ANKARAPHP

EXPRESSJS

NodeJS tabanlı asenkron web framework


                var express = require('express')
                var app = express()

                app.get('/', function(req, res){
                    res.send('Merhaba Express')
                })

                app.listen(3000, function(){
                    console.log('Express sunucusu 3000 portunda çalışıyor!')
                })
            

PUG (ESKİ ADIYLA JADE)

Kolay bir şekilde HTML sayfaları hazırlamanızı ve template engine avantajlarından yararlanmanızı sağlar.


app.set('view engine', 'pug')
            

html
  head
    title= title
  body
    h1.ankara#konya PHP
        span(style='color: red;') NodeJS
            

<html>
    <head>
        Merhaba
    </head>
    <body>
        

PHP NodeJS

</body> </html>

SOCKET.IO

Gerçek zamanlı olarak Sunucu-İstemci arasında iki yönlü iletişim kurmanızı sağlar.

KİMLER KULLANIYOR?

  • Microsoft Office
  • Trello
  • Zendesk
  • Yammer

MERHABA SOCKET


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');
});

io.on('connection', function(socket){
  console.log('Yeni bir istemci baglandi!');
});

http.listen(3000);

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

GÜLE GÜLE SOCKET


io.on('connection', function(socket){
  console.log('Yeni bir istemci baglandi!');
  socket.on('disconnect', function(){
    console.log('istemci bizi terketti :(');
  });
});

BİRAZ KONUŞALIM MI?


io.on('connection', function(socket){
  console.log('Yeni bir istemci baglandi!');
  socket.on('konusalim', function(msg){
    console.log('istemciden gelen: ' + msg);
  });
  socket.on('disconnect', function(){
    console.log('istemci bizi terketti :(');
  });
});

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io();
  socket.emit('konusalim', "Selam sana demir ayak");
</script>

Yeni bir istemci baglandi!
istemciden gelen: Selam sana demir ayak
            

BİZİM DE SÖZ HAKKIMIZ VAR!


// server.js
io.on('connection', function(socket){
    socket.emit('ben de konusucam', {
        mesaj: 'Merhaba kartal gözü'
    });
});

// index.html
socket.on('ben de konusucam', function (cevap) {
    console.log('SUNUCU:', cevap.mesaj)
});

HERKESE BAĞIRALIM


// server.js
io.on('connection', function(socket){
  socket.broadcast.emit('alo', {
    mesaj: 'Kayalara geldik'
  });
});

// index.html
socket.on('alo', function (cevap) {
    console.log('SUNUCU:', cevap.mesaj)
});

SOHBET ÖRNEĞİ - MERHABA

SOHBET ÖRNEĞİ - YENİ MESAJ

NERELERDE KULLANILABİLİR?

  • Sohbet
  • HTML5 İnteraktif Oyunlar
  • AR & VR
  • Müzik & Radyo Yayını
  • Online IDE (c9)

HOLYJS

NodeJS Server Project Starter

github.com/holyjs/holyjs

HOLYJS ÖZELLİKLERİ

  • Sosyal Auth (Twitter, Facebook, Google, Github, Instagram...)
  • MVC Yapısı
  • MongoDB
  • DotEnv (.env)
  • CSRF
  • Yeoman Generator
  • Socket.io
  • Test Framework (mocha)

DİNLEDİĞİNİZ İÇİN TEŞEKKÜRLER