webx.plm
- Ajaxed web-UI module for plum (IRC gateway)
webx.plm
ver.0.80 を公開します。
webx.plm
って何?
plum に標準添付されている Web による IRC を可能にするモジュール web.plm
を Ajax 化するとどうなるか、という試験的取り組みによって作られたモジュールです。
一番肝心な部分が Ajax になっていないなど、不完全な部分が多々ありますが、雰囲気だけでも掴んでいただければ幸いです。
plum 本体が十分高速なマシンで動いていて、ブラウザが立ち上がっているマシンとの間が十分な帯域で接続されていれば、IRC専用クライアントまではいかないまでも、それなりには使えるのではないかと思っています。
ドキュメントは特に添付していませんので、webx.plm
の最後の方の HTML 部分の記述(本当は html としてブラウザに表示できるはずだったのですが、ヒヤドキュメント使ったせい(多分)でソース(の一部)が見えてしまいます(汗;))や、本ページをご参照ください。
plum 2.33.1 で動作確認しています。3.x での動作は未確認です。 クライアントのブラウザは、Windows 2000/XP の IE 6.0 / Firefox 1.5 / Opera 9 で大まかに確認しています。 W-ZERO3 の Opera Mobile 8.5 でも概ね動くようです。 Netscape 7.02(MacOS 8.6 on PowerMac7100/66AV) でも概ね動きました(汗;)(ダイヤログの日本語が化けてしまいましたが)。 ブラウザ依存の部分の判定は厳密ではないので、機能(の一部)については動かない部分があるかも知れません。 ブラウザは JavaScript が使える設定になっている必要があります。
module/sys/
の下(つまり web.plm
の置いてあるディレクトリ)に webx.plm
を置いてください。
あとは、plum.conf
(相当)のファイルに webx.plm
が有効になるように設定を追記してください。
webx.plm
の最後の方が HTML になっているので、参考になるかと思います。
既存の web.plm
や recent.plm
の設定方法も参考になると思います。
取り急ぎは、
を設定して、ブラウザで plum の動いているマシンの IP の 8000 番ポートを狙ってみてください(他の用途で 8000 番ポートを使用中の場合は、他の空いているポート番号を指定してみてください)。 認証画面が出てくるので、id と password で設定した文字列を入力します。+ sys/webx.plm sys.webx.client: *:8000 id:password
若干画面構成は異なりますが、web.plm
と同じような感覚で使えるのではないかと思います。
左上がカレントチャネルのログ、右上がカレントチャネルに入っているメンバーの nick 一覧、カレントチャネルの下が全チャネルのログ、右下がチャネル一覧、一番下が発言等の各種入力欄です。
sys.webx.refresh
で設定した秒数毎に自動的に画面が更新されます。
Nick を変更した際や、チャネルトピックを変更した際にも画面に更新が掛かります(このあたりが Ajax 使っています。単なる meta refresh とは違うわけです)。
発言が画面に反映されるまでに数秒かかります(ローカルエコーしない)ので、じっくりお待ちください。
画面が再描画されたのに自分の発言が表示されなかった場合は、sys.webx.delay
の値を長めに調節すると、うまくいくかも知れません。
ACCESSKEY に対応しているので、Windows の IE/Firefox の場合は
入力 | 機能 |
---|---|
ALT+j | join |
ALT+p | part |
ALT+t | topic |
ALT+n | nick |
ALT+k | kick |
ALT+m | mode |
ALT+i | invite |
ALT+f | whois |
ALT+1 | 1番目のチャネル(*PRIVATE*) |
ALT+2 | 2番目のチャネル |
ALT+3 | 3番目のチャネル |
ALT+4 | 4番目のチャネル |
ALT+5 | 5番目のチャネル |
ALT+6 | 6番目のチャネル |
ALT+7 | 7番目のチャネル |
ALT+8 | 8番目のチャネル |
ALT+9 | 9番目のチャネル |
で入力ダイヤログが開きます。Mac の場合は ALT キーの代わりに Control キーを使ってください(ブラウザによって多少違いがあるようです)。
オリジナルの sys/web.plm
をベースに Ajax 化の改造を加え、途中から log/recent.plm
を部分的に組み込む形で作っています。
オリジナルの中身をあまり理解していないので(汗;)、Perl 部分についてはエンバグを避ける意味も含めて、極力オリジナルソースを活かすように記述しています。
そのせいもあって、かなりコードに冗長な部分があります。
まだあちこち中途半端なコメントアウト行があったり、作りかけ感満載です(苦笑)。
あとからあとから思いつきで機能を継ぎ足していったので、非常に分かりにくくなってしまいました。
webx.plm
の配布・改変等について
オリジナルの plum / web.plm / recent.plm
の扱いに準ずるものとします。
もっとも、webx.plm
を改変するよりは、最初からしっかり設計し直してスクラッチから書き直した方が良いものができると思います。
webx.plm を使って実際にブラウザで IRC をやっていると、plum の使用メモリ容量が増大していきます(汗;)。きっとどこかに問題があるのでしょうが……(分かる方、教えてください)
以下の TODO は実行されない/できない場合があります(苦笑)。
sys.webx.delay
は無くても最適ディレイで動くかなぁ(IRC サーバ側の応答が遅ければやっぱりダメかな……)
以下のサイト/ソース/ドキュメント等を参考/使用/流用/改造させていただいております。 著者の皆様方に感謝いたします。 不都合等ございましたら、ご連絡ください。
web.plm
recent.plm
最初はテスト用のチャネル等で発言してみるなど、動作確認してからお使いいただくのが宜しいかと思います。
webx.plm
は無保証です。
また、sys.webx.refresh
の設定値によっては、激しい(?) http アクセスを伴います。
plum が設置されているサーバ/ネットワークの負荷や、http アクセスのログがどこに残るのか :-) 等にもご配慮の上、ご利用ください。
http://localhost:8000/
に ProxyPass
や ProxyPassReverse
を使って、マップすることができます(port 8000 で plum を動かしている場合)。詳細はこの辺を参照してください。
sys.webx.cols1
等で、画面のフレーム分割の大きさの比率を指定できるようにしました。webx.plm の最後の方の使用例を見てください。
sys.webx.order
で、チャネル一覧等のナンバリングを on/off できるようにしました。PDA 等の画面の狭い端末を使用する場合は、off にすると良いかも知れません。
sys.webx.line
や sys.webx.rline
の行数が多く、sys.webx.refresh
が短い場合などでも、トラフィック削減効果が期待できます(多分)。
バグ報告その他要望等は下記までどうぞ。ただし、必ず対応できるかどうかはお約束しかねます(苦笑)。