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

  • ChannelRichard

    ChannelRicha

    7 Kasım 2008
  • Chilla Frilla™

    Chilla Frill

    7 Aralık 2006
  • mahalodotcom

    mahalodotcom

    8 HAZİRAN 2007