[Node.js] /dev/urandom を延々と出力する HTTP サーバー
Node.js の本体の API にある、http.createServer を使って、ファイルの内容 (Readable Stream) を Class: http.ServerResponse (Writable Stream) に対して随時書き込んで、/dev/urandom から湧き出てくるランダムバイナリをストリーミング出力するとても有意義なサーバーを作ってみました。
以下のコードを node hogehoge.js という感じで実行して、適当に http://localhost:10001/ みたいなアドレスに対して HTTP でアクセスすると、バイナリデータを延々と返してくれます。
ポイント
続編に続く
hidekiy blog: [node.js] 続 /dev/urandom を延々と出力する HTTP サーバー
関連記事
urandom streaming on twiggy - tokuhirom's blog.
以下のコードを node hogehoge.js という感じで実行して、適当に http://localhost:10001/ みたいなアドレスに対して HTTP でアクセスすると、バイナリデータを延々と返してくれます。
ポイント
- /dev/urandom を、ファイルの内容を Readable Stream で取れるように、fs.createReadStream で開く。
- HTTP レスポンスオブジェクト: resに対して、res.write で書き込みしていって、送信バッファがいっぱいになった場合、書き込めるようになると発生するイベント: drain まで書き込まずに待つ。
var fs = require('fs'),
http = require('http'),
util = require('util'),
PORT = 10001;
http.createServer(function (req, res) {
res.writeHead(200, {
'Content-Type': 'application/octed-stream',
});
var stream = fs.createReadStream('/dev/urandom');
stream.on('data', function (data) {
console.log('on data: ' + data.length);
var flushed = res.write(data);
if (!flushed) {
console.log("send buffer looks full");
stream.pause();
}
});
res.on('drain', function () {
console.log("on drain");
stream.resume();
});
}).listen(PORT);
続編に続く
hidekiy blog: [node.js] 続 /dev/urandom を延々と出力する HTTP サーバー
関連記事
urandom streaming on twiggy - tokuhirom's blog.
コメント
コメントを投稿