cometd を使ってみたという記事で、dojo 0.4.2 + cometd のセットアップ方法を記述しました。dojo 1.0 が出て、多少状況が変化したようなので、
Kodougu で行った作業をもとに cometd のセットアップ方法を整理して掲載します。
■ インストール方法
○ 環境
Windows XP SP2
Windows Vista(我ながらチャレンジャーだと思っています。)
○ Python 関係のセットアップ
1. Python 2.4.4(インストーラあり、EasyInstall もインストールすべし)
Python Japan User's Group
※ EasyInstall のインストール方法は少し下のほうに記述してあります。
2. Twisted Python 2.4.0(インストーラあり)
http://twistedmatrix.com/trac/
※ 最新の 2.5.0 では、Twisted Web2 との互換性の問題で、正常に動作しません。
3. Twisted Web2 0.2.0 のインストール
http://twistedmatrix.com/trac/wiki/TwistedWeb2
python setup.py install
4. simplejson 1.7.3(EasyInstall でインストール)
http://cheeseshop.python.org/pypi/simplejson
easy_install simplejson
5. path 2.2 をダウンロードしてインストール
http://www.jorendorff.com/articles/python/path/
python setup.py install
補足:EasyInstall のインストール
x.1. 以下のファイルをDL
http://peak.telecommunity.com/dist/ez_setup.py
x.2. 以下のコマンドを実行
python ez_setup.py
Windows Vista では、simplejson のインストールがうまくいかない場合があります。私は、ソースコードをダウンロードして、直接 setup.py を実行しました。互換性を配慮して、C による最適化モジュールも除外しました。運用環境は Linux 系にすると思うので、そこではインストールにてこずるということはありませんでした。開発環境であれば、パフォーマンス除外でかまわないでしょう。
python setup.py --without-speedups install
○ Cometd のインストール
1. cometd のチェックアウト
以下のアドレスからチェックアウトしてください。
http://cometd.googlecode.com/svn/trunk/
2. cometd-twisted フォルダ内の setup.py を書き換えてください。
Windows XP と Vista では、data_files という項目を、「/etc/cometd」から「scripts」に書き換えてください。CentOS では、デフォルトのままで問題ありませんでした。
3. setup.py の実行
python setup.py install
4. cometd.tac の編集
<<Python Install Dir>>\scripts\cometd.tac で設定(ポートやログファイルなど)を変更することができます。必要に応じて編集してください。デフォルトではポートは 8080 で設定されます。
補足: Cometd のバージョンアップはこまめに行う方がいいかもしれません。
こちらの記事によると Cometd もやり方が変わっているようです。
○ Cometd の起動
<<Python Install Dir>>\scripts フォルダ内で以下のコマンドを実行してください。
python twistd.py -oy cometd.tac
CentOS では以下を打ち込んで起動しています。
python /usr/bin/twistd -oy /etc/cometd/cometd.tac
補足:原因不明のエラー
私の環境では、<<Python Install Dir>>\Lib\site-packages\twisted\python\log.py の 228 行目をコメントアウトしないと、正常に動作しませんでした。原因については、現在調査中です。
# err()
■ dojo 1.0 における変更
○ dojo 0.4.x からの変更
dojo 0.4.x と比較すると以下のような変更がなされています。それぞれ、dojo のソースコードなどを参照しながら、適切に修正してください。
・ 名前空間の変更「dojo.io.cometd → dojox.cometd」
・ cometd オブジェクトではなく、dojox.cometd を使用する必要があること
・ dojox.cometd.init, dojo.subscribe などの引数の順番の変更
○ 新規に使い始める人に向けて
Publisher/Subscriber モデルになっているので、簡単に使うことができます。おおよそ、以下のようなコードを書いて起動します。
dojo.require("dojox.cometd");
dojox.cometd.init("http://127.0.0.1:8080/cometd");
dojox.cometd.subscribe(channel /* チャンネル(例:/kodougu/diagram/1) */,
hogeObject /* メッセージを受け取るオブジェクト */,
"accept"/* メッセージを受け取るメソッド名 */);
dojo に含まれる以下のファイルを「dojox.cometd」で検索すると、dojox.cometd の使い方をよく理解できるでしょう。
/dijit/demos/chat/client.html
/dijit/demos/chat/room.js