2006/09/18
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 まで。異なるマシンから、あるいはブラウザの画面を二つ立ち上げ、このページを開いてチャットしてみれば、瞬時にチャットのメッセージが表示されるのがわかるかと思う。
この記事にリンク
- mysql と sqlite3 のどちらでも動作するよう find 文を書く方法
- 第1回Ext JS/Ext GWT勉強会に参加してきました / 勢いでRailsのExt Scaffoldを使ってみた
- Facebook Developer Garage Tokyo に参加 & FB版 Kanji-Fandom をデモしてきました


投稿者:masatobito
2006/09/18 at 23:30:35
Comet 使うとコネクションを開きっぱなしになるので、大規模アプリケーションは難しいですよね。
投稿者:jishiha
2006/09/24 at 21:59:02
自分用にメモです。Juggernaut を使ったデモ http://www.clockingit.com/comet