twicliでUser Streamsを試してみる

現在β版となっているTiwtter Streaming APIのUser Streamsを試してみました。

http://dev.twitter.com/pages/user_streams

これを使うと、Twitterの自分に関する情報(フォロワのつぶやきやDM、follow/remove, RTなどなど)をリアルタイムに通知してもらうことができます。
今回はtwicliにリアルタイムにつぶやきを表示してみました。


JavaScriptのみではStreamを処理できないため、サーバを置いてJSONPに変換する方式で実装しました。twicli側はプラグインで本体の一部コードを置き換える形で対応させてみました。

サーバ(Ruby 1.8.7/1.9.2で動作確認) + プラグイン : http://gist.github.com/596521

サーバの起動時に引数に「ユーザ名:パスワード」を指定する必要があります。BASIC認証を使っていますがそのうち使えなくなるかも…。 OAuthを使うようにしました。別途、token/secretの取得/設定が必要です。


Streaming APIは改行区切りでつぶやきや各種イベントがJSONで記述されたものがどんどん送られてくるので、サーバ側でこれを1行ずつ切り取ってバッファリングしておき、JavaScriptからクエリが来る度に一つずつJSONP形式で返しているだけです。バッファが空の場合はイベントが来るまでレスポンスを延期します。
一方、JavaScript側は、レスポンスを得ると(それがつぶやきなら)表示後、直ちに再度クエリを出します。


リアルタイムにつぶやきがどんどん反映されるTwitterは少し違った世界に見えるような気がするから不思議です。