2011-07-17

[Node.js] 続 /dev/urandom を延々と出力する HTTP サーバー

この記事は過去の記事 [Node.js] /dev/urandom を延々と出力する HTTP サーバー の続きです。

ドキュメントをよく読んでいたら、Readable Stream のインスタンスメソッド pipe を使うと簡単に書けることが分かりました。このメソッドは引数に Writable Stream を渡すと、drain を監視しながら少しずつ流し込む、過去の記事と同様の動作を勝手にやってくれる働き者です。

さらにこれと同様の動作をする util.pump というのもありますがお勧めしないとのことです。
参考: Difference stream.pipe and util.pump?

var fs = require('fs'),
    http = require('http'),
    PORT = 10001;

http.createServer(function (req, res) {
    var stream = fs.createReadStream('/dev/urandom');

    res.writeHead(200, {
        'Content-Type': 'application/octed-stream',
    });

    stream.pipe(res);

}).listen(PORT);