[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 でアクセスすると、バイナリデータを延々と返してくれます。 ポイント /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) { ...