2012-02-22 22 views
6

私はHTTPSを使用するように私のアプリを変換しており、長持ちした接続を開いたままにすることで、できるだけハンドシェイクのコストを避けたいと考えています。NSURLConnectionはキープアライブタイムアウトを無視しますか?

サーバーがConnection:keep-aliveとKeep-Alive:timeout = Nで応答すると、NSURLConnectionは透過的に基底のソケットを開いた状態に保つ必要があります。

しかし、私の接続が約10秒間だけ開いているのが見えています。私のキープアライブの応答はそれ以上のものに設定されています。私はまた、Connection:私のリクエストヘッダーにキープアライブを送信しています。

誰もがこれにいくつかの光を当てることができますか?私は実際にこれを達成するためにCFNetworkを使用する必要はありません。

答えて

2

次の2つの方法があります:タイラーは彼の答えhereに述べたよう

を:

あなたのNSURLRequestオブジェクトでタイムアウトを指定することができます。 への1つの方法は、 requestWithURL:cachePolicy:timeoutInterval:メソッドを使用してそれを構築することです。 (その部分を気にしたくない場合は デフォルトのNSURLRequestUseProtocolCachePolicy cachePolicy パラメータを渡すことができます)。タイムアウトは、 秒単位の浮動小数点値です。基本的にiPhone SDKのすべての時間間隔は、 です。

また、NSURLConnectionの代理人が設定されていることを確認して、connection:didFailWithError:メソッドに と応答します。 接続は、 の接続完了時に常にこのメソッドまたはconnectionDidFinishLoading:を呼び出します。

それともクリスは彼の答えhereに示唆して何の操作を行います。

ASIHTTPRequestがexpirePersistentConnections方法があります。あなたが探しているものは です。

これはNSURLConnectionのドロップイン置換ではありませんが、 ではNSURLConnectionからASIHTTPRequestへの移植が難しくありません。

+2

他人の言葉を適切な帰属なしでコピーしないでください。上記のように編集しましたが、今後これを行うようにしてください。 –

0

10sの問題はiOS7で修正されました。私は同じ問題を抱えていて、バグに従っていました。 iOS 6ポイントで修正されました。

+1

iOS 9.2.1:これは修正されていません。 http://stackoverflow.com/questions/25372318/error-domain-nsurlerrordomain-code-1005-the-network-connection-was-lost/25996971#25996971 – jcady

関連する問題