Aerial over Comet

Aerial(エアリアル) - Ajax/Cometの次を行く リアルタイム双方向RPCトラックバックより引用:
次世代Webアプリケーション基盤技術 - 個人的まとめ他

これは本当に非常に素晴らしい。
ただ、Flash・サーバ間の通信がHTTPじゃなく、Socket(独自プロトコル over TCP)なのが最大の欠点になってしまうと思う。
似たことが出来るAdobeのBlazeDSの最大の利点はやっぱりHTTPで通信してるところなんだと思うし。
 BlazeDSどうでしょう - 無題 @ はてな
このエントリの通りFlex3でExternal Interface使ってフレームワークとして整えてあげればHTTP版Aerialが完成なんじゃなかろうか。
もしくはサーバをCometにして、Flash側でそれをうまいことラッピングしてプロトコル意識させないようにするとか。

そこで、「サーバーをCometにして、Flash側でそれをうまいことラッピングしてプロトコル意識させないようにする」を実装してみました ;- )
↓ここにデモがあります。


同時接続数制限の回避対策はしていないので、1つのブラウザで複数のタブを開いて接続したりするとメッセージが届かなくなったりします。


HTMLのソースを読むと分かりますが、サーバーに接続する処理以外はどちらも同じコードになっています。
仕組みはそのまま、CometでJSON-RPCを実装しています。サーバー側ライブラリクライアント側ライブラリ


BlazeDSとは何なのか

調べて書こうと思ったのですが、分かりやすい記事があるので :-p

BlazeDSのサーバープッシュ機能は、

  1. Long Polling
  2. ストリーミングチャンネル(Transfer-Encoding: chunkedで応答を返す)
  3. Polling + Piggybacking

がサポートしされているようです。


サーバーはスレッドモデルで実装されており、最大接続数は100〜300本程度?に制限されるようです。
プロトコルはHTTPを使うので、HTTPプロキシを通過できるようです。ただしCometと同じように、同時接続数制限を回避するハックが必要?かもしれません。