com.sun.net.httpserver.HttpServerは単一接続のパイプラインをサポートしていますか?複数のクライアントを並行して処理しているように見えますが、単一の接続の要求が連続して実行されています。
これは正確ですか?もしそうなら、これを回避する方法はありますか?
com.sun.net.httpserver.HttpServerは単一接続のパイプラインをサポートしていますか?複数のクライアントを並行して処理しているように見えますが、単一の接続の要求が連続して実行されています。
これは正確ですか?もしそうなら、これを回避する方法はありますか?
HTTPパイプライニングとは、非常に単純なことを意味します。クライアントは、前の応答を読み取らなくても、接続に次の要求を書き込むことができます。
httpサーバーがパイプライニングをサポートしないことは非常に困難です。先を見越す必要があり、現在の要求を超えて使用可能なバイトが見つかった場合は、中止する必要があります...しかし、それはばかげており、誰もそれを行いません。
これは、リクエストがサーバーによってどのように処理されるか(シリアルまたはパラレル)とは関係ありません。もちろん、それを並行して行うことはより困難であり、解決しなければならないいくつかの質問があります。
HTTP 1.1 に準拠した HTTP サーバーは、パイプラインをサポートすることが期待されています。パイプラインはクライアントでもサポートされていることに注意してください。httpサーバー
によると
API は、RFC 2616 (HTTP 1.1) および RFC 2818 (HTTP over TLS) の部分的な実装を提供します。
com.sun.net.httpserver.HttpServer
が HTTP1.1 を完全にサポートしていないことを暗示しているようです。
HttpURLConnection
はパイプラインをサポートしていないため、 もパイプラインをサポートしていないと考えてcom.sun.net.httpserver.HttpServer
います。
あなたはいくつかのテストをしたと言います。これをどのようにテストしましたか?
更新:
注記から、パイプラインがサポートされているようです。
あなたが言うように、リクエストをパイプラインで送信すると、リクエストの到着に応じて応答が返されるはずです(各リクエストを完了するのにかかる時間とは関係ありません。つまり、一部のリクエストは他のリクエストよりも高速です)。