@ITの記事、AJaxうきうきWatch 第3回 どんなに無茶をやっても「それもありかな」なAjaxを読んだ。
ここで出てくるAjaxの例に面白いものを見つけた。
ハイライト3・すぐに反応が返ってくるチャット
ConnectiveChat
おもしれぇ。
以前、俺も、AjaxChatと題して、JavaScriptでChatプログラムを書いた。
一定時間ごとにクライアント側がサーバに問い合わせるポーリングというテクニックが定番として使われることになります。
はい、おっしゃるとおりです。先のAjaxChatでも、Timerでポーリングしています。だって、サーバからPushなんてできないもん。
このConnectiveChatは、この問題を創意と工夫で解決しました。
プログラムなんてのは、創意工夫の連続ですよ。
クライアント側が先に通信を開始させておき、それに対する応答を別のクライアントからのメッセージを受信するまで遅延させるという方法で実現されています。
すげぇ~。確かにできるわぁ。
クライアントからのリクエストをサーバ側で受け取ったら、タイムアウトするか、他のクライアントからの更新があるまで保留。タイムアウトするか、他のクライアントからの更新があったら、リクエストを返す。ただそれだけ。すんげぇシンプルだけど、完璧。
こうすることで、無駄なトラフィックを発生させないようにするらしい。
もちろん、サーバー側の平均サービス時間は長くなり、特に接続リソースは増える。
DATA.blogのAJAXによるチャットという記事では、DoSに関する考察が見られる。まぁ確かにそうだけど、回避手段はいくらでもできそうだね。
世の中には面白いことを思いつく人がいっぱいいるねぇ。これを使ってなんか遊べないかな。
AJaxうきうきWatch 第3回 どんなに無茶をやっても「それもありかな」なAjaxでは、これ以外にも、
Google Maps APIを背景にしたゲーム
* Google Maps APIシューティング挫折版
Mozilla専用、3DなGoogle Maps
* Google Mapsが3Dになりました
が出ている。おもしれぇ。どちらも、おもしれぇ。。。
こうゆうのを見ると、おいらもなんか作らなきゃって思うよねぇ。