Silverlight アプリケーションから PHP ページへの HTTP 永続接続を確立しようとしています (つまり、HTTP 要求ごとに新しい TCP 接続を作成せずに) Apache サーバーによってホストされています。
この目的のために、Web サーバーが「接続」ヘッダーを「キープアライブ」に設定して HTTP 応答を送信する必要があります。クライアント側では、Silverlight が提供するネットワーク API は基本的にブラウザ ネットワーク機能のラッパーであるため、問題はないようです。リクエストのデフォルトでは問題ありません。Content-Length も明確に定義されているため、サーバーはいつ応答を送信する必要があるかを認識できます。ただし、PHP 要求に対するサーバーの応答は、体系的に "Connection:" を "close" に設定するため、接続が終了し、永続的な接続が妨げられます。
この問題を回避するためにいくつかのことを試しました: 異なるメソッド (GET および POST)、スクリプトの先頭に次の PHP コードを使用して、応答に「接続: キープアライブ」を明示的に与えます。
header("Connection: Keep-alive");
後者は、期待されるヘッダーを応答に追加します。これは良いことですが、追加の「接続: 閉じる」が応答ヘッダーの後半に追加されます。
「クローズ」を強制するのはPHPまたはApacheの機能ですか(セキュリティまたはパフォーマンスの目的で、私は推測しています)、またはここに何かが欠けていますか?
前もって感謝します。
PS : パケットをスニッフィングしたところ、「キープアライブ」を使用している Web サイトは多くなく、TCP 接続が再確立されていることがわかりました。キープアライブは、HTTP 1.1 での既定の優先動作ではありませんか?