4

multipart/xmixed-replace 応答を送信しているときにサーバーの速度を低下させることができるかどうかを調べようとしています。クライアントにモーション jpeg ストリームのレート制限を試みてもらいたいです。サーバーが HTTP 応答で送信する内容については多くのドキュメントを見つけましたが、クライアントが送信する内容については何も見つかりませんでした。

multipart/x-mixed-replace 応答の各部分の後に、クライアントは何を送信しますか? 何も送信しない場合、サーバーはパーツを積み上げ続けますか?

4

3 に答える 3

1

実際、マルチパートの概念は、同じメッセージ本文内のコンテンツ タイプを描写することだけであるため、マルチパートのことは厄介者だと思います。したがって、サーバーの観点からは (コンテンツが送信される速度に関して)、単一の大きなデータのチャンクを送信することと実際には違いはありません。

そのため、Range ヘッダーで特定の範囲 (一度に 1 つの「部分」) のみを要求できるかどうか疑問に思っています。

応答ヘッダーの末尾からバイトのカウントを開始します。最初の部分の最後に到達したら、読み取ったバイト数に注意して接続を閉じます。同じドキュメントのリクエストを送信しますが、最初の範囲をチャンクの最後のバイトとして指定します。繰り返しますが、応答を読み取り、部分の最後に到達したら、現在の応答バイトを前の応答バイトに追加し、接続を閉じて、吐き気を繰り返します...

試したことはありませんが、サーバーが範囲ヘッダーをサポートしていて、クライアント側でパッチを適用できる場合は機能するようです。

パケットをドロップしてレート制限するクライアント側プロキシを作成する方が簡単かもしれません...

于 2009-01-10T19:47:52.217 に答える
0

HTTP レベルでは、クライアントは何も送信しないと思います。サーバーは、接続が開いている限り、応答を送信し続けることができると想定します。

クライアントとサーバーの交換には「ack」の概念がないため、問題に対する簡単な HTTP レベルの解決策はないと思います。

この問題には明らかに TCP-/IP レベルの解決策があります。

クライアントが実際にサーバーの応答ヘッダーを受信し、応答がマルチパートであることを認識したときに、クライアントが別のことをできるかどうか疑問に思っています-接続を中止して、新しい非キープアライブを開き、パーツを1つずつ取得できるかどうか...

于 2009-01-10T19:31:07.947 に答える
0

Mozilla 用の LiveHTTPHeaders プラグインを使用してみてください。私は Gmail (AJAX を使用) にアクセスし、クライアントとサーバーの間の会話を数分間追跡しました。これはあなたを助けることができるようです。

于 2009-01-10T13:19:13.967 に答える