2

HTTP BOSH と HTTP Pipelining について混乱しています。

BOSH 仕様: http://xmpp.org/extensions/xep-0124.html

クライアントが接続マネージャーにデータを送信する必要がある場合は、データを含む 2 番目の要求を送信するだけです。残念ながら、ほとんどの制約のあるクライアントは HTTP パイプライン(単一の接続を介した同時要求) をサポートしていないため、クライアントは通常、2 番目の HTTP 接続を介してデータを送信する必要があります。

この仕様には、HTTP パイプラインに関する多くの情報がありますが、 http://en.wikipedia.org/wiki/HTTP_pipeliningから入手できます。

POST のような冪等でないメソッドは、パイプライン処理しないでください。

そしてBOSH仕様では:

すべての情報は、標準の HTTP POST 要求および応答の本文にエンコードされます。各 HTTP 本文には、転送される XML 要素をカプセル化する単一のラッパーが含まれています (ラッパー要素を参照)。

では、HTTP BOSH で HTTP パイプラインを使用するにはどうすればよいでしょうか??

4

1 に答える 1

6

HTTP RFCは言う

クライアントは、非冪等メソッドまたは非冪等メソッド シーケンスを使用してリクエストをパイプライン処理するべきではありません (セクション 9.1.2 を参照)。

このコンテキストでの「すべきではない」には、 RFC 2119によって与えられた意味があります。つまり、

このフレーズ、または「推奨されません」というフレーズは、特定の状況において、特定の動作が許容できる、または有用でさえある正当な理由が存在する可能性があることを意味します。

POSTこれが意味することは、一般に、HTTP パイプラインをリクエストと組み合わせて使用​​することは推奨されないということです(これはRFC 2616 の概念に沿っていますPOST)。ただし、HTTP プロトコルが実際に禁止しているわけではありません。実際にその動作を禁止する場合、RFC 2616 は「MUST NOT」という言葉を使用します。仕様書の作成者は、リクエストのパイプライン化に悪影響がないBOSH場合に限ると判断しました。BOSHPOST

于 2012-08-02T19:38:44.167 に答える