Ajax: 2005年9月アーカイブ

meebo.com

Ajaxでインスタントメッセージができます。

AIM
Yahoo! Messenger
ICQ
MSN

に対応しているのでいい感じです。

でもページで msn で日本語がちゃんと通るか試したら、
バッチリでした。かなり使えるかも。

Netvibes

こんなの見つけたけど、ほとんど start.com と同じみたいやね

Top 10 Ajax Applications from a VC perspective


VCが注目するAjaxアプリトップ10だそうです。
日本でもこのように大規模なAjaxアプリを作る企業が多く出てくるといいのですが。

Ajax で SSHクライアントを作ってみた。

ajaxssh
デモページ

IE では動きません。firefox での動作を確認してます。
IE で動かないのは
xmlhttprequest.readystate == 3
で途中まで届いているデータを取ることができないから。
もしうまい方法知っている方がいれば、是非教えてください。

Ajax で SSHクライアントを作る問題点は、
Ajax(というよりHTTP)がstatelessだということです。
ssh はコネクションを切らずに状態が遷移しますから、
データを POST するたびに毎回サーバ側で ssh を exec するような実装では
ちゃんとした ssh クライアントとして動作しないわけです。
(cd とかしても次にコマンドを送信するときはカレントディレクトリが元の位置に戻る)

そこでサーバ側でデーモンを動かして、デーモン経由で ssh と通信するようにしました。
これなら ssh を終了することなくデーモン経由でコマンドを送信することができます。
具体的な通信経路は次のようになります。


ブラウザ
↑↓ xmlhttprequest
ssh.php
↑↓ named pipe
ssh-wrapper(daemon)
↑↓ pseudo terminal
ssh


ブラウザは xmlhttprequest で ssh.php と通信します。
コマンドを実行するたびに ssh.php にデータを POST して
結果を受け取ります。

ssh.php は一番最初は ssh-wrapper を起動します。
ssh.php は名前つきパイプ経由で ssh-wrapper と通信します。

ssh-wrapper はデーモンプログラムで実行するとバックグランドに移行します。
擬似端末を作成し ssh を起動します。ssh とはこの擬似端末経由で通信します。
最初双方向パイプで ssh と通信しようと思ったのだけど、
ssh が制御端末にデータを出力する部分があるので擬似端末経由にしました。
名前つきパイプを作成し、ssh.php とはこの名前つきパイプ経由でデータ通信します。

ソースコードを一応置いておきました。
分かる人だけ自分の環境に入れてみてください。


追記:
パスワードの入力でさえも画面に表示されてしまうという恐ろしい仕様w
だったのですが、修正してパスワード入力の場合は画面に表示されないようにしました。

このアーカイブについて

このページには、2005年9月以降に書かれたブログ記事のうちAjaxカテゴリに属しているものが含まれています。

前のアーカイブはAjax: 2005年8月です。

次のアーカイブはAjax: 2005年10月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。