NSURLConnection忽略Keep-Alive超时?

ile*_*tch 7 iphone keep-alive nsurlconnection ios

我正在将我的应用程序转换为使用HTTPS,并希望通过保持打开长期连接来尽可能避免握手成本.

从堆栈溢出中读取Web和其他答案,如果服务器响应Connection,则NSURLConnection应该透明地保持底层套接字打开:keep-alive和Keep-Alive:timeout = N.

但是我看到我的连接只保持打开大约10秒钟.我的Keep-Alive响应设置远不止于此.我也在我的请求标题中发送Connection:keep-alive.

任何人都可以对此有所了解吗?我真的不想使用CFNetwork实现这一目标.

Min*_*bil 2

你有两种方法:

正如泰勒在他的回答中所说

您可以在对象中指定超时NSURLRequest。实现此目的的一种方法是通过 requestWithURL:cachePolicy:timeoutInterval:方法来构造它。NSURLRequestUseProtocolCachePolicy(如果您不想担心这部分,您可以传入默认的cachePolicy参数。)超时是一个以秒为单位的浮点值,基本上iPhone SDK中的所有时间间隔都是如此。

还要确保您的NSURLConnection委托已设置并响应该connection:didFailWithError:方法。连接始终调用此方法或connectionDidFinishLoading:在连接完成时调用。

或者按照克里斯在他的回答中建议的那样

ASIHTTPRequest 有一个 expirePersistentConnections 方法。它可能会满足您的需求。

它不是 NSURLConnection 的直接替代品,但将代码从 NSURLConnection 移植到 ASIHTTPRequest 并不难。

  • 请不要在没有适当出处的情况下复制他人的文字。我已经编辑了上面的内容来执行此操作,但请确保您将来这样做。 (2认同)