JWChatのインストール方法

kdaiba2006-03-02

JWChatって

JWChatはAjax技術を利用した,ブラウザで動くJabberクライアントです.といっても Jabberサーバがhttpを標準でサポートしているわけではありません.httpをサポートするためには,http://www.jabber.org/jeps/jep-0025.htmlというすでに[歴史的]とタグが打たれている技術と,http://www.jabber.org/jeps/jep-0124.htmlという最近の技術の二通りがあります.ただし,0124は0025を完全に置き換えた技術というわけではなく,JEP-0025がクッキーを使っていてJEP-0124で考えている環境では使えなかったので,新しく仕様を決めたようです.JWChatは両方をサポートしています.

Another approach might have been to modify or extend Jabber HTTP Polling [6]. This informational protocol has been used by Jabber clients without runtime constraints to access XMPP servers from behind firewalls. Unfortunately, the method defined in JEP-0025 also depends on cookies, does not meet most of the requirements described below, and cannot be extended without breaking all existing implementations.
JEP-0124より抜粋

JWChatインストール

EjabberdがJEP-0025をサポートしていたので,JWChatのEjabberdへのインストール法を見ながらインストールしました.5280番ポートは,前回設定したEjabberdの設定ファイル,"/etc/ejabberd/ejabberd.cfg"で以下のように設定しているのですでに開いています.

{5280, ejabberd_http,    [http_poll, web_admin]},

ダウンロードページからファイルを落として,apacheのhtdocs配下に展開します.ここでは,"/usr/local/http_proxy/htdocs/jwchat"に展開したとします.後は,"/usr/local/http_proxy/htdocs/jwchat/config.js"で,

var SITENAME = "foo.bar.co.jp"
var DEFAULTCONFERENCEROOM = "For_Test";
var DEFAULTCONFERENCESERVER = "conference.foo.bar.co.jp";

という3箇所の定義を変更してやれば終わりです.DEFAULTCONFERENCEROOMはJWChatでチャット会議を開催しようとしたとき,初期設定で表示する会議名になります.ここでは"For_Test"と表示するようにしてみました.DEFAULTCONFERENCESERVERは,config.jsで

% Default options for mod_muc:
%   host: "conference." ++ ?MYNAME
%   access: all
%   access_create: all
%   access_admin: none (only room creator has owner privileges)
  {mod_muc,        [{access, muc},
                    {access_create, muc},
                    {access_admin, muc_admin}]},

となっているので,"conference.foo.bar.co.jp"と設定しています.JWChatのdefaultではこの部分が"conference.localhost"となっているので注意が必要です.JWChatで今回試してみた部分の設定はこれで終わりです.

転送が必要なのじゃ

JWChatは"/usr/local/http_proxy/htdocs/jwchat"にインストールしていますが,JEP-0025に関する部分は"/usr/local/http_proxy/htdocs/jwchat/http-poll"配下にあるように作られているので,"h ttp://foo.bar.co.jp/jwchat/http-poll"というアクセスがあったら,そのアクセスをejabberdが動かしている"h ttp://foo.bar.co.jp:5280/http-poll"に転送する必要があります.このためにapacheとmod_proxyを使いました.

proxy と rewriteを使う

話が後先になりますが,JWChatを使うにはproxy機能を持つapacheが必要です.そのために,

configure --prefix=/usr/local/http-proxy --enable-rewrite --enable-proxy --with-mpm=prefork

とconfigureを使ってapacheを構築しました.後は,httpd.confで

RewriteEngine On

RewriteRule /jwchat/http-poll/ http://foo.bar.co.jp:5280/http-poll/ [P]

<Directory /usr/local/http-proxy/htdocs/jwchat>
  AddDefaultCharset UTF-8
  Options  MultiViews
  AllowOverride None
  Order deny,allow
  Allow from all
</Directory>
</VirtualHost>

と書いてやれば完成です.apacheを起動して,"h ttp://foo.bar.co.jp/jwchat"と叩くとログイン画面が出てきます.