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 ヘッダーを受け取る必要があるということです。