2009-06-04 9 views
5

私はAJAX Push Engineについて知りましたが、Linux/Apacheで動作しますが、これは私の選択肢ではありません。現在、AJAXとどのようにデータをWebページクライアントにプッシュできますか?

http://www.ape-project.org/

私は高トラフィックサイトの素晴らしいではありません頻繁にサーバーをポーリングする必要がページを最新の状態に保つために。必要に応じてクライアントにデータをプッシュするオプションは素晴らしいオプションですが、ネイティブJavaScriptではソケット、AFAIKはサポートされていません。私が読んだことの1つのトリックですが、サイトは現在廃止されています。これは、フラッシュモジュールを使用してソケット通信を処理し、JavaScriptへのメッセージを中継することです。

このアプローチを研究する際の問題は、キーワードとしての「JavaScript push」が、私が望むコンテキストの代わりに配列のプッシュ機能を思いつくことです。

ブラウザでプッシュ通信を行うためにサーバーとの永続接続を確立するにはどうすればよいですか? Flash/ActionScriptが必要ですか、現在使用しているすべてのブラウザで動作する別のオプションがありますか? (IE6/7/8、FF3、Safari、Chrome)

サーバに関しては、オリジンポリシーとポートセキュリティのために複雑化する必要もあります。利用可能なオプションについて説明していただけることをお伝えいただければ幸いです。

+0

私はいくつかの答えにつながるいくつかの関連の質問を見つけた...と多くの質問です。 :) http://stackoverflow.com/questions/471780/asp-net-http-server-push-to-client http://stackoverflow.com/questions/50831/how-to-push-data-多様な種類のクライアントタイプのリアルタイムに近いもの http://stackoverflow.com/questions/219868/client-notification-should-i-use-an-ajax-push-or-投票 http://stackoverflow.com/questions/847227/real-time-chat-with-push-notification – Brennan

答えて

0

Direct Web Remoting(DWR)ライブラリは、あなたが探しているもののように聞こえるリバースAjaxのを、サポートしています。 Cometをサポートしています(PollingとPiggyBackと一緒に)。彼らのウェブサイトに関する詳しい情報:http://directwebremoting.org/dwr/index.html

0

これは興味深いものですが、私はこれらのWikiページのスケーラビリティの問題については何も読んでいませんでした。 10,000の長いポーリング接続を開いている場合、Webサーバーは何をしますか?

また、基本概念に精通していないユーザーにとっては、サーバーからクライアントへのデータをアドホックな方法でプッシュすることは不可能であり、常にそうであることを理解することが重要です。 HTTPプロトコルがこれをサポートしていても、特にNATファイアウォールが関与している場合は、ネットワークはサポートされません。

したがって、サーバープッシュ通信を提供すると主張するソリューションは、クライアントによって開始され、開かれたままになり、最終的にタイムアウトする接続に依存する必要があります。私は、サーバーのスケーラビリティとパフォーマンスに悪影響を及ぼさなければならないため、これについて懸念しています。

+0

そのFacebookのように見え、Googleは長いポーリングを使用し、彼らはまだ落ちていない。それは決して不可能ではありません。 – cgp

+0

サーバーからクライアントへの接続を開きたい場合は、NATを使用してポートノッキング方法を使用して接続を確立できます。その後、ソケットを維持することができます。私の懸念は、多くのソケットをアクティブに保つためのサーバの限界です。私は、クライアントがアイドルであるかどうかを検出できれば、少なくとも時々接続をリセットするか、非アクティブなクライアントをアイドル状態にします。 – Brennan

+0

よく、altCognito、もしTodd Hoffが彼のブログに正しければ、昨年のFacebookの1億ドルのハードウェア投資がそれに対応しました。しかし、この記事では、サーバーの実装に関するいくつかの詳細があります。明らかに、長いポーリングは、.NetなどのIISや、ブロックされた各接続が高価なリソースを抱えている他の主流のWebサーバー/言語プラットフォームで実行したいことではありません。 – cdonner

関連する問題