Kod Panosu

Kopyala, Yapıştır, Hatırla, Kodla..

Tag Archives: node.js

Express Altında EJS İle .html Uzantılı Dosyaları Template Olarak Kullanmak

Express için varsayılan template engine’i Jade olsa da PHP, ASP veya JSP geçimişi olanların EJS’ye alışması çok daha kolay ve hızlı olur kanaatindeyim. Ancak kullandığınız IDE’nin .ejs uzantısını tanımama ihitmali yüksek. EJS sentaksı genel anlamda HTML’e benzediği için template’lerinizi .html uzantısıyla oluşturursanız IDE ile iyi geçinirsiniz ama böyle yapmaya karar verirseniz aşağıdaki satırı uygulamanıza eklemeyi unutmayın, yoksa tarayıcınızda sayfa sayfa stack trace’leri görürsünüz..

var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path');

var app = express();

app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.engine('html', require('ejs').__express);
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

app.get('/', routes.index);
app.get('/users', user.list);

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});
Reklamlar

Node.JS: NPM ile Kurduğunuz Modülleri package.json Dosyasına Kaydettirmek

Node.JS projenize NPM kullanarak dahil etmek istediğiniz modülleri

npm install <moduladi> --save

veya

npm install <moduladi> -S

şeklinde kurarsanız kurduğunuz modüller package.json dosyasındaki dependencies bölümüne kaydolur.

Böylece node_modules klasörünü hariç tutup sadece projenize ait olan kodu başka bir kaynağa taşımanız durumuna sadece

npm install

komutuyla projenizde kullandığınız tüm modülleri tek seferde çekmiş olursunuz.

Node.JS: Express Session’larını Socket.IO ile Paylaşmak

// Dependencies
var express = require('express')  //express@2.5.11
  , connect = require('express/node_modules/connect')
  , sessionStore = new connect.middleware.session.MemoryStore()
  , io = require('socket.io') // socket.io@0.9.6
  , routes = require('./routes');

var app = module.exports = express.createServer();

// Configuration
app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'ejs');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser());
  app.use(express.session({ 
      secret: 'your secret here'
    , key:  'express.sid'
    , store: sessionStore
  }));
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function(){
  app.use(express.errorHandler());
});

// Routes
app.get('/', routes.index);

app.listen(3000, function(){
  console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
});

// Sockets
var sio = io.listen(app)

sio.set('authorization', function (data, accept) {
  if (!data.headers.cookie) 
    return accept('No cookie transmitted.', false);
    
  data.cookie = connect.utils.parseCookie(data.headers.cookie);
  data.sessionID = data.cookie['express.sid'];
  data.sessionStore = sessionStore;
  sessionStore.get(data.sessionID, function (err, session) {
    if (err || !session) {
        accept('Error: No such session', false);
    } else {
        data.session = new connect.middleware.session.Session(data, session);
        accept(null, true);
    }
  });
});

sio.sockets.on('connection', function (socket) {
  var hs = socket.handshake;
  var session = hs.session;
  
  console.log('A socket with sessionID ' + hs.sessionID + ' connected!');
  
  var intervalID = setInterval(function () {
    hs.session.reload( function () { 
      hs.session.touch().save();
    });
  }, 60 * 1000);
  
  socket.on('setVal', function(data){
    session.val = data.value;
    session.save();
    console.log('changeVal:' + data.value);
  });
  
  socket.on('getVal', function(){
    console.log('getVal:' + session.val);
    socket.emit('response', session.val)
  });
  
  socket.on('disconnect', function () {
    console.log('A socket with sessionID ' + hs.sessionID + ' disconnected!');
    clearInterval(intervalID);
  });
});
<script>
  var socket = io.connect('/');
  socket.emit('setVal', { value: 'test' });
  socket.emit('getVal');
  socket.on('response', function(data){
    console.log(data);
  })
</script>

Kaynak: http://www.danielbaulig.de/socket-ioexpress

Ubuntu: NodeJS’yi Kurarken OpenSSL Bulunamadı Hatası

Ubuntu üzerinde NodeJS’yi kurarken ilk aşamada çalıştırdığınız

./configure

komutu eğer size OpenSSL’i bulamadığını söylüyorsa ilgili paketleri sisteminize kurmak için aşağıdaki komutu yönetici olarak (sudo ile) çalıştırın.

apt-get install libssl-dev openssl