websocketに夢を見ていました
http://bloga.jp/koma/ws/100images/wspipeling.html
websocketのサンプルを公開されていました。
Chromeの最新版と、Safariのベータ版で動くそうです。
同時コネクション数の違い
DOMの追加で画像ダウンロードを行うと、最大で6個のtcp connectionが張られるようです(chromeの場合:xhrでは最大で3コネクションでした)。同時にコネクションを複数張るというのは、例えるなら、6台のトラックで複数の荷物を手分けして運ぶのと同じですので、それだけ従来のhttpでも早くなります。
というか、
websocket: 道路1つを作り、トラックを6台用意する
xhr: 道路を1つ作り、トラックを1台用意する
だと思います。
ただし、xhrは「道路を3つ(ブラウザ設定により増やせる)まで作れる」ということで、トラック3台と書かれたんだと思いますが。
でまあ、道路の数は良いとして、
xhr: 接続が必要になったら道路を造り、トラック1往復で道路を破棄
websocket: 道路は破棄命令が出るまで何度でも使える
というのが最も大きな違いだと思います。
10回通信が必要になったら、xhrは10回道路を造りますが、websocketは1回で良い。
もちろんこれは大きなメリットですが、
私が思っていたのは、「道路を造り出すのがサーバーから出来る」でした。
つまり、普段はネットワークを接続していないが、
あらかじめサーバーに通知しておけば、「サーバーが必要なタイミングでクライアントに対してネットワーク接続を開始できる」
だと思ってました。
実は、これは出来ないらしい。
cometで言われた最大の欠点の「ネットワークをつなぎっぱなしになる」というのは、
websocketでも行われそうな感じです。
じゃ、毎回接続して、不要になるたびに接続を切ればいいじゃないか、と思えますが、
そうなったら、websocketである必要はなくなります。
相当量のデータを通信する必要があるならwebsocketだと思いますが、
そんなもの、一般のウェブサイトで使うはずもなく、
おそらくJavaScriptゲームでも作らないと、websocketを有効に使えそうな所はないでしょう。
当然、そんな高負荷なサイトは、一般向けホスティングサービスで許されるはずもなく。
でなければ、業務用ですかね。