2016-06-28 2 views

答えて

2

用語「"Comet"」は、「Ajax」という用語でジョークとして生まれました。

AJAX(Asynchronous JavaScript and XMLとして)は、HTTPリクエストを実行し、ブラウザのJavaScriptエンジンからのHTTP応答を処理する手法です。 当時、「Ajax」もクリーニング製品でした。

AJAXを使用している開発者は、サーバ側イベントのブラウザに低レイテンシの配信を実行する手法を検討し始めたときに、「Comet」という語句was coinedが「Comet」という時点では、 Ajax "クリーニング製品、" Comet "テクニックは「Ajax」テクニックより優れていました。

「Comet」は、クライアント(通常はブラウザ)に非常に短い待ち時間(1秒未満)のサーバー側イベントを通知するために使用される一連のWeb用HTTP技術です。

「ロングポーリング」はそのような手法の1つで、おそらく最も一般的で信頼性の高い手法です。 他のそのようなテクニックには、HTTP/1.1のTransfer-Encoding: chunkedメカニズムを使用した、「隠されたiframe」、「スクリプトインジェクション」(別名JSONP)、「無限レスポンス」(別名「ストリーミング」)テクニックが含まれます。

現在、Server Sent Events(SSE、別名EventSource)は、標準化されたストリーミング技術ですが、最近はあまり開発されていません。 Transfer-Encoding: chunkedメカニズムを使用するのではなく、SSEはブラウザが実装するContent-Type: text/event-streamを使用し、HTTPトランスポートメカニズムの上に単純なプロトコルを使用します。つまり、サーバーから提供されるコンテンツには、この単純なプロトコルで定義された形式があります.JavaScriptエンジンに渡されるイベントに変換されるためにはブラウザによって解析される必要があります。アプリケーションには、これらのJavaScriptイベントに適用されます。

BOSH(XEP-0124で定義されています)は、特にXMPPで使用されるロングポーリング手法の変種であり、あまりにも「彗星」技術です。

Bayeuxは、HTTPや用WebSocketなどのトランスポートプロトコルの上にセマンティックチャネルメッセージを定義するトランスポートに依存しないプロトコルです。 CometDプロジェクトは、HTTPとWebSocketの上でBayeuxを使用して、アプリケーションにピアツーピア、パブリッシュ・サブスクライブ、およびリモート・コールfunctionalitiesを提供します。他のプロジェクトでは、HTTPまたはWebSocket(またはその両方)の上でBayeuxプロトコルを使用します。

最後に、WebSocketは、HTTPにはない双方向機能を内蔵したトランスポートプロトコルです。 しかし、それはトランスポートするペイロードの意味を定義するものではなく、それを記述するメタデータを持っているため、通常Bayeuxなどの他のプロトコルのトランスポートプロトコルとして使用されます。 WebSocketはHTTPに基づいていないため、 "Comet"技術ではありません。

「アーキテクチャ」という言葉の意味にかかっています。

私は、「Comet」は、HTTPを使用して低レイテンシのイベントを実現するための技術群です。

ロングポーリング、HTTPチャンクストリーミング、SSE、BOSHは、これらの「彗星」技術の一部です。

Bayeuxは、メッセージングに使用されるJSONに基づいたトランスポートに依存しないプロトコルです。

WebSocketは、Bayeuxのような一般的にトランスポートに依存しない他のプロトコルと組み合わせて使用​​される双方向トランスポートプロトコルです。ブラウザーでのそのサポートは、 "Comet"技術の代わりになります。

関連する問題