Re:node.jsでストリーミング的な

node.jsでストリーミング的な - 四角革命前夜

インプット(fs.ReadStream)もアウトプット(http.ServerResponse)もStream実装だし、pipe使うのが楽じゃないかと思った。
こんなかんじでどうですかね?

var http = require('http')
,   url  = require('url')
,   path = require('path')
,   fs   = require('fs')
;

var server = http.createServer(function (req, res) {
    var file = path.join( __dirname, url.parse(req.url).pathname );
    var onError = function (e) {
        res.writeHead(500, {'Content-Type': 'text/plain'});
        res.end(e.toString());
        console.error(e);
        return;
    };

    var readStream = fs.createReadStream( file );
    readStream.on('error', onError);

    res.writeHead(200, {'Content-Type': 'video/mp4'});
    readStream.pipe(res);
});

var port = 3000;
server.listen(port);
console.log("server start to listen on port %s", port);

元記事と違って*.mp4 ファイルを ストリームで流すだけのサーバ。
http://127.0.0.1:3000/hoge.mp4 とすると hoge.mp4 をながす



【追記: 2013.02.03】
npm モジュールを使うともっと楽で、例えば filed モジュールを使うと

var http = require('http')
,   url   = require('url')
,   path  = require('path')
,   filed = require('filed')
;

var server = http.createServer(function (req, res) {
    var pathname = url.parse(req.url).pathname;
    filed(path.join( __dirname, pathname)).pipe(res);
});

var port = 3000;
server.listen(port, function () {
    console.log("server start to listen on port %s", port);
});

とするだけで、面倒な背圧の処理や、ETag処理もしてくれる。