2009-05-03 7 views
7

WebサーバーにCometなしでWebブラウザにメッセージを送信させることは可能ですか?彗星のない逆Ajax?

FacebookやGoogleのような大手ウェブ会社はこの目的のためにCometを使用していますが、主要なブラウザでTCP接続が有効になっていると消えるのを待っているようです。

答えて

5

それは、ウェブサーバ が彗星せずにWebブラウザ にメッセージを送信できるようにすることは可能ですか?

はい、Silverlight、Flex、Flash、Javaアプレットから可能です。

のFacebook やGoogleなどのすべての主要なWeb企業は、この目的のために 彗星を使用し、それだけでTCP 接続が主要な のブラウザで有効になっていた場合に消えるのを待っている醜いハック のように思えます。

TCP接続はHTML 5 Webソケットでは問題を解決できません。職場、大学、学校、ファイアウォールなどから多くの人がGoogleやFacebookを使用していることがよくありますが、非標準のポートやHTTP以外のトラフィックをブロックすることがよくあります。したがって、Webブラウザにメッセージを送信するソリューションはHTTP上で動作し、HTTPのように見えることがあります。そういうわけで、GoogleとFacebookはCometを使い続けています。そうしないと、彼らのユーザーの大部分に達することができなくなります。実際には、ファイアウォールやリバースプロキシの中には、長時間実行されるHTTP接続を閉じるものがあるため、Ajaxポーリング接続が頻繁に使用されます。逆Ajax経由でブラウザにメッセージを送信できるサーバーを探しているなら、StreamHub Reverse Ajaxのようなものを提案できます。

+1

参照:http://stackoverflow.com/questions/1227266/how-do-i-open-a-connection-back-to-the-server-using-flex – DLauer

+0

およびhttp://stackoverflow.com/質問/ 1225147/how-do-i-open-a-tcp-socket-from-silverlight – DLauer

2

別の方法があるとFacebookとGoogleがどうするのでしょうか?

他の方法もあります。 Javaアプレットをページに埋め込むことができます。 Javaアプレットが署名されており、ユーザーがその許可を与えると、サーバーがイベントを送信するために長時間実行される接続が開かれる可能性があります。しかし、これにより、より壊れやすく、より多くのユーザーとのやりとりが必要で、起動が遅く、Cometよりも少ないプラットフォームで作業するものが得られます。

HTML5にserver-sent eventsweb socketsを追加する議論がありますが、これは非常に予備的なことであり、おそらく標準にはなりません。

2

"コメット"は、既存のhttpプロトコルを使用してデータのプッシュをシミュレートするための人為的な用語です。あなたができることは何もないと恐れています。

唯一の解決策は、現在のプロトコルの「強化」か、おそらくプラグインベースの解決策であると思われます。そのためにjavaを使用できます。しかし、これは他の問題を引き起こすでしょう。なぜなら、基本的に、そのブラウザで着信接続を利用できるようにする必要があるからです。

2

コメットは、長いポーリングAJAX呼び出しとして実装できるので、セマンティクスの問題になります。 Here, for example, is a jquery pluginは、jQueryのajax呼び出しの上でBayeuxプロトコルを使用してCometを実装しています。