32

HTML 5 の Websocket は、サーバー プッシュの新しい標準になるようです。

これは、Comet と呼ばれるサーバー プッシュ ハックが廃止されるということですか?

Websocket が間もなく (1 ~ 2 年) すべての主要なブラウザーで利用可能になるときに、comet の実装方法を学ぶ必要がある理由はありますか?

それまでは、代わりにBeaconpushまたはPusherを使用できますか?

4

6 に答える 6

17

このパズルには2つのピースがあります。

Q:「comet」のクライアント側の部分は必要ですか?

A:はい。今後2年間でさえ、「主要な」ブラウザーでWebSocketが完全にサポートされることはありません。たとえば、IE8はそれをサポートしておらず、FireFoxの現在のバージョンもサポートしていません。IE6が2001年にリリースされ、現在も存在していることを考えると、WebSocketが彗星に完全に取って代わるとは思えません。

Q:「comet」のサーバー側部分は必要ですか?

A:はい。コメットサーバーは、「一般的な」Webサーバーでは処理されない長寿命のHTTP接続を処理するように設計されています。クライアント側がWebSocketをサポートしている場合でも、サーバー側は負荷を処理するように設計する必要があります。

さらに、「gustavogb」が述べたように、少なくとも現時点では、WebSocketは多くのHTTPプロキシで適切にサポートされていないため、すべてが更新されるまで、何らかのフォールバックメカニズムが必要です。

要するに、今日存在する彗星は、すぐになくなることはありません。

追記として、現在ChromeとSafariに実装されているWebSocketのバージョンは、2つの異なるドラフトであり、「現在の」ドラフトでの作業はまだ非常に重い開発中であるため、それを言うのは現実的ではないと思います。 WebSocketのサポートは現在機能しています。好奇心として、または学習のために、確かに、しかし実際の仕様としてではなく、少なくともまだです。

[更新、2011年2月23日]

現在出荷されているバージョンのSafariの実装は壊れており(正しいヘッダーが送信されません)、Firefox 4ではWebSocketが廃止されたため、出荷が有効にならず、IE9も見栄えがよくありません。ドラフト仕様の有効なバージョンが機能しているのはChromeだけのようです。そのため、WebSocketsにはまだ長い道のりがあります。

于 2010-08-11T21:39:38.853 に答える
12

これは、Comet と呼ばれるサーバー プッシュ ハックが廃止されるということですか?

WebSocketsは、Comet、AJAX、Long Polling、および Web ブラウザーがサーバーとの双方向通信用の単純なソケットを開くことができなかった場合の問題を回避するためのすべてのハックを置き換えることができます。

すべての主要なブラウザーで WebSocket が間もなく利用可能になるときに、comet の実装方法を学ぶ必要がある理由はありますか?

それはあなたにとって「すぐ」が何を意味するかによります。たとえば、Internet Explorer (IE 9 より前) のバージョンはまだ WebSockets API をサポートしていません。


アップデート:

これは、網羅的な回答を意図したものではありません。このトピックの詳細については、他の回答、特に@jvenemaを確認してください。

于 2010-08-09T00:00:43.993 に答える
3

中期的には、ブラウザのサポート不足だけでなく、HTTP プロキシが原因で、websockets が comet ソリューションに取って代わることはありません。ほとんどの HTTP プロキシが Websocket 接続をサポートするように更新されるまで、Web 開発者は、この種のプロキシで「保護された」ネットワークで動作するコメット技術に基づく代替ソリューションを実装する必要があります。

ショート/ミディアム websockets は、利用可能な場合に使用される最適化にすぎませんが、多くの Web サイトにアクセスできるようにする必要がある場合は、websocket が利用できない場合に依存するロングポーリング (コメット) を実装する必要があります。あなたの管理下にないネットワーク/ブラウザを使用している顧客。

うまくいけば、これは JavaScript フレームワークによって抽象化され、Web 開発者にとって透過的になります。

于 2010-08-09T00:11:29.927 に答える
3

ブラウザーのサポートがない場合に comet にフォールバックする Web ソケット ライブラリ/フレームワークの使用を検討してください。

Orbited と Hookbox をチェックしてください。

于 2010-08-09T14:02:00.030 に答える
2

はい、「すぐに」は非常に滑りやすい用語であるためです。多くの Web ショップは、依然として IE6 をサポートする必要があります。

いいえ、コメットのフレームワークとサーバーが最近出現したため、地下室で手を汚す必要はほとんどなくなります。

はい、「すぐに」は非常に滑りやすい用語なので...

于 2010-08-08T23:54:50.513 に答える
0

Websocket、BiDirectional または Server-Initiated HTTP (hybi) を担当する[ working group ] ワーキング グループの憲章:

ワーキンググループの説明

HTTP はほとんどの場合、要求/応答プロトコルとして使用され、クライアントが新しいデータをポーリングしたり、ユーザーがブラウザーの更新ボタンを押したりします。最近の Web アプリケーションは、リアルタイムで Web サーバーと通信する方法を見つけており、データが利用可能になるとすぐにサーバー側からクライアントにプッシュしています。ただし、これらのアプリケーションは現在、さまざまな HTTP メカニズム (ロング ポーリング リクエストなど) を使用して Web サーバーと双方向に通信することしかできません。

Hypertext-Bidirectional (HyBi) ワーキング グループは、HTTP クライアント、サーバー、および中間エンティティ間の双方向通信を維持するための 1 つのアプローチの標準化を目指しています。これにより、現在使用されているハング リクエストと比較して効率が向上します。

HTTP にはまだ果たすべき役割があります。柔軟なメッセージ指向のシステムです。websockets は、双方向性を提供し、長いポーリングの問題を完全に回避するために開発されました。[これはうまくやる]。しかし、それは http よりも簡単です。httpには便利な機能がたくさんあります。コメットであろうと他のプッシュ技術であろうと、http の双方向通信を充実させる継続的な進歩が確実にあるでしょう。私自身の謙虚な試みは [ http://github.com/rektide/pipe-layer ] です。

于 2010-09-23T23:41:51.563 に答える