10

HTTP Streaming Comet とは、サーバーからデータがプッシュされた後に接続を閉じない "forever iframe" / "forever xhr" のバリエーションを意味します。すべてのサーバー プッシュ イベント。

dojo.io.cometd パッケージを調べたところ、ポーリングの実装しかないようです。this exampleも見つけましたが、かなりの調整を行った後でも webkit では機能しないようです (他の場所でも機能するようになりました)。サファリ ブログからのこのアナウンスは、 xhr で可能であることを示唆しているようですが、コードやドキュメントを見つけることができず、動作させることもできませんでした。

Webkit ブラウザー (Safari および Chrome) で HTTP ストリーミング コメットを実現する手法、スクリプト、ライブラリ、またはデモを知っている人はいますか?

アップデート

もう少しいじくり回した後、XHR 経由で Safari で http ストリーミングを機能させるには、次の 2 つのことを行う必要があることがわかりました。

  • 応答には Content-Type が必要です: multipart/x-mixed-replace
  • ブラウザーが一貫して更新を表示し始める前に、応答でいくつかの「ノイズ」文字を送信する必要があります。これは、内部バッファーを満たすことに関係していると思います。

更新 2

iframe 技術を使用して、最終的にすべてのブラウザーで動作するようになりました。このソリューションの注意点は、WebKit ベースのブラウザーのみが multipart/x-mixed-replace ヘッダーを受け取る必要があるということです。

4

4 に答える 4

4

ウィキペディアによると、HTTP ストリーミング コメットはすべてのブラウザーで可能であるとされています。「そうでないフレームを使用したページ レイアウト」、Ajax: The Definitive Guide。O'Reilly Media, pp. 320. ISBN 0596528388 は、この情報のために引用されている参考文献であるため、この本には、これを行う方法に関する提案が含まれている可能性があります。

またhttp://meteorserver.org/には、クライアント側ライブラリ + クライアントにデータをプッシュするサーバーの Chrome で動作することを確認したばかりのデモがあります。

于 2008-10-09T23:00:56.120 に答える
3

それは間違いなく可能です。GMail がそれを行います。最新の Webkit の開発者ツールのリソース セクションを見ると、実際の動作を見ることができます。彼らには、多かれ少なかれ無期限に開いたままになる「バインド」と呼ばれる要求があります。私の理解では、新しいメールが到着すると、その接続に遭遇します。

于 2008-10-10T07:16:24.963 に答える
3

はい。

Safari を動作させるには、応答の先頭に大量(少なくとも 256 バイト) のジャンクを含める必要があります。

于 2008-11-14T15:49:45.633 に答える
0

これは古い投稿ですが、検索を行ったところ、次の記事が非常に役立ちました 。 doom%E2%80%9D-while-loading-comet-forever-iframe/

于 2010-05-10T15:23:01.063 に答える