この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ストリーム処理のモジュール
今回紹介するモジュールは、同期データを一定時間ごとに処理することができるnode-interval-streamモジュールです。 大きいサイズのデータを処理するとき等、指定した秒ごとにストリームを処理して少しづつ結果を受け取ることができます。
環境構築方法
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.5
- Node.js : v0.10.8
- npm : 1.2.23
npmを使用して必要なモジュールをインストールしましょう。
% npm install request interval-stream
サンプルコード
Githubにあるサンプルを元に、レスポンスのJSONデータを ローカルファイルとして少しづつ取得してみましょう。 下記サンプルでは、2秒ごとにリクエスト先から少しづつJSONデータを受け取ります。 結果はローカルのファイルに出力していきます。
// app.js
var fs = require("fs");
var request = require('request');
var IntervalStream = require('interval-stream');
var is = new IntervalStream(2000);
request('http://isaacs.couchone.com/registry/_all_docs')
.pipe(is)
.pipe(fs.createWriteStream('out.json'));
上記プログラムを実行しながら、ローカルに出力されたout.jsonをtailでみてみましょう。 2秒ごとにout.jsonにデータが追加されていきます。
% tail -f out.json
{"total_rows":39502,"offset":0,"rows":[
{"id":"","key":"","value":{"rev":"1-6e36a93ad72045c526b919518ea16dd0"}}
・
・
まとめ
requestモジュールに1つpipe処理をはさむだけでいいので、簡単に使えますね。