読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

Twitter Streamingを使う時にはエラーイベントも処理しておく

果たしてパッケージの問題なのか、Meteorとの副作用なのか、Node.jsのTwitterパッケージを使ってストリーミング受信すると、例外が発生してMeteorが再起動することが時々起こっていました。

Twitterパッケージの中でJSON.parseに失敗すると、errorイベントを起こすようになっており、errorイベントのためのハンドラを用意していないと例外が発生するようです。
なのでこんな感じにしておきましょう。

    twitter = new Twitter
        ...
    twitter.stream 'user', (stream) ->
        stream.on 'data', Meteor.bindEnvironment ((data) ->
            ...
        ), (e) -> share.sendErrorMail "stream.on: #{e.stack}"
        stream.on 'error', (error) ->
            console.log error

これで再起動は起こらなくなります。