Juggernaut で遅延なしチャット

ConnectiveChatというブラウザ上で動作するのだが、画面を再読み込みしたり、定期的にサーバーにポーリングすることなしに、即座にメッセージが表示されるチャットの存在を知った。このようなリアルタイムにページをアップデートする方法は、調べてみると、新しい Ajax のアプローチとして、Cometというらしい。

この Comet は、Rails ではJuggernautというプラグインで簡単に実現できるということなのでやってみた。Juggernautを使ってみる-Hello, world!が参考になる。

途中つまずいたのは、juggernaut_config.xml の設定。JuggernautのFAQページを読み違え、PUSH_PORTに1024番以上のポートを設定すべきところを間違えて適当に1024以下の空いてそうなポートを指定していた。

それと、Railsの開発環境だと、通常3000番台でアプリケーションを実行するので、

CROSSDOMAIN: "http://localhost/crossdomain.xml"

CROSSDOMAIN: "http://localhost:3001/crossdomain.xml"

などと修正しないとうまく動かない。

正しく動作すると、ページを開いたときに You have been connected というダイアログメッセージが表示される。

作ったサンプルのチャットページをおでかけマペタ内に置いてみた。おでかけマペタとは関係ないのだが、実際に動くさまを見たければ、http://odekake.mapeta.net/chat まで。異なるマシンから、あるいはブラウザの画面を二つ立ち上げ、このページを開いてチャットしてみれば、瞬時にチャットのメッセージが表示されるのがわかるかと思う。