http://japan.cnet.com/blog/kenn/2006/09/22/entry_lingr_and_comet/原理的に不可能であるhttpによるサーバーからクライアントへのプッシュ通信を擬似的に実現する方法。
すげぇ……。トンチの世界だ。
Cometでは、まずブラウザ側があらかじめサーバに対してHTTPリクエストを発行しておき、
サーバ側はそのリクエストに対してレスポンスを返さずにずっと掴んだままにしておきます。
そして、別の経路でサーバがキック(メッセージを送信)されたら、それまで掴みっぱなしに
なっていた複数のリクエストに対して一斉にメッセージを乗せてレスポンスを返すことで、
擬似的にサーバからのプッシュを実現するのです。
ところが、そうは問屋が卸しません。今度は、サーバ側に問題が発生します。
解決するためにはコネクションとスレッドを分離するらしい。
Cometではコネクションはつなぎっぱなしになっていますから、いつまで経ってもプロセスや
スレッド(およびメモリ資源)が解放されません。しかも、それらのスレッドは仕事もせずに
アイドリングしており、メモリとCPUを浪費しているだけです。