node.jsのいろいろなモジュール43 – 一定時間ごとにストリームを処理する

この記事は公開されてから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処理をはさむだけでいいので、簡単に使えますね。

参考サイトなど