SORU
1 EYLÜL 2011, PERŞEMBE


NodeJS temel statik dosya sunucusu

Nodejs statik dosya bir server mükemmel bir server gibi daha bir egzersiz daha fazla düğüm anlamak yaratmaya çalışıyorum. Farkındayım projeleri gibi Bağlayın ve düğüm-statik ve tamamen niyetinde kullanmak bu kitaplıklar için daha fazla üretim için hazır kod, ama ben de temellerini bilir, ne yapıyorum. Bunu unutmayın, küçük bir server.js kodlanmış buldum:

var http = require('http'),
    url = require('url'),
    path = require('path'),
    fs = require('fs');
var mimeTypes = {
    "html": "text/html",
    "jpeg": "image/jpeg",
    "jpg": "image/jpeg",
    "png": "image/png",
    "js": "text/javascript",
    "css": "text/css"};

http.createServer(function(req, res) {
    var uri = url.parse(req.url).pathname;
    var filename = path.join(process.cwd(), uri);
    path.exists(filename, function(exists) {
        if(!exists) {
            console.log("not exists: "   filename);
            res.writeHead(200, {'Content-Type': 'text/plain'});
            res.write('404 Not Found\n');
            res.end();
        }
        var mimeType = mimeTypes[path.extname(filename).split(".")[1]];
        res.writeHead(200, mimeType);

        var fileStream = fs.createReadStream(filename);
        fileStream.pipe(res);

    }); //end path.exists
}).listen(1337);

Benim soru iki yönlüdür

  1. Bu "" ya da daha şık/daha sağlam daha iyi bir yöntem var mı ? düğüm ve html vb Temel akış oluşturma hakkında gitmek için doğru yol olduğunu

  2. .() boru düğüm temelde sadece takip yapıyor?

.

var fileStream = fs.createReadStream(filename);
fileStream.on('data', function (data) {
    res.write(data);
});
fileStream.on('end', function() {
    res.end();
});

Herkese teşekkürler!

CEVAP
1 EYLÜL 2011, PERŞEMBE


  • Temel sunucunuz iyi görünüyor, dışında:

    return eksik bildirim var.

    res.write('404 Not Found\n');
    res.end();
    return; // <- Don't forget to return here !!
    

    Ve:

    res.writeHead(200, mimeType);

    olmalıdır:

    res.writeHead(200, {'Content-Type':mimeType});

  • Evet pipe() de/devam ettirir duraklar temelde kaynak yayını alıcı daha yavaş olması durumunda). Burada pipe() fonksiyon kaynak kod: https://github.com/joyent/node/blob/master/lib/stream.js

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GoogleTechTalks

    GoogleTechTa

    15 AĞUSTOS 2007
  • Greater Than Gatsby Photoshop Actions & Lightroom Presets

    Greater Than

    11 ŞUBAT 2013
  • tinycammonitor

    tinycammonit

    14 Aralık 2010