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

  • Pepsi

    Pepsi

    1 Kasım 2005
  • theavettbrothers

    theavettbrot

    9 ŞUBAT 2007
  • thegeniuses.tv

    thegeniuses.

    11 Aralık 2006