むすび v1.1.0でTwitterをリダイレクション、パイプしよう!
むすびがバージョンアップして、リダイレクションとパイプ機能がつきました。
さて、WWW、特にURIは、世界規模のファイルシステムを実現しました。
しかし、今のWebには、ファイルとして表現できないものが生まれています。
それは、Twitterなどからリアルタイムに流れてくるメッセージのストリームです。
ところで、Unixでは、行指向のテキストストリームを扱うために、リダイレクションやパイプといった便利な機能があります。
catやgrepってすごく便利ですよね。
そこで、むすびでも、メッセージ指向のXMLストリームを扱うために、それらを真似してみました。
これで、例えばTwitterなどからのメッセージをcatして、
grep.htmlに通ったものだけ読むといったことが簡単にできるようになります。
従来は以下のxmpp URIでロードしたページは、juliet@localhostにしかメッセージできませんでした。
xmpp://romeo@localhost/Musubi/juliet@localhost#http://musubi.im/chat/
これからはリダイレクションとして、chan/0にもメッセージできます。
chanはチャンネルの略です。0はチャンネル名で、好きな名前を付けられます。
ページのスクリプトで、例えばこのようにしてください。
Musubi.send(<message to="chan/0">
<body>このメッセージはchan/0にリダイレクションします</body>
</message>);
catするには、複数のページから1つのチャンネルにリダイレクションするわけです。
chan/0にリダイレクションしたメッセージは、以下のようなxmpp URIに届きます。
xmpp://romeo@localhost/Musubi/chan/0
xmpp://chan/0/juliet@localhost
xmpp://chan/0/chan/foobar
ちなみに、ちょっとまぎらわしいですが、以下のURIにはjuliet@localhostやchan/foobarからのメッセージは届きません。
パイプは以下のようにします。chan/0 -> alice@localhost の向きのパイプです。
例えばgrepするページを挟むとよいでしょう。
xmpp://chan/0/alice@localhost#http://musubi.im/grep/
リダイレクションするページ
パイプの例: grepするページ
まとめ
julietからのloveを含むメッセージをaliceに転送します。
xmpp://romeo@localhost/Musubi/juliet@localhost#http://musubi.im/rdr/ (julietのメッセージをchan/0にリダイレクション) xmpp://chan/0/alice@localhost/#http://musubi.im/grep/ (パイプでgrepしてaliceへ)
Unixのシェルコマンドと見比べてみてください。
romeo$ <juliet > chan/0 romeo$ <chan/0 grep love > alice