HTTPMaximumConnectionsPerHost,timeoutIntervalForRequest在iOS自定义协议中使用时不影响defaultSession

问题描述:

我正在使用自定义协议,其中我使用defaultConfiguration创建NSURLSession。这里是我的代码 -HTTPMaximumConnectionsPerHost,timeoutIntervalForRequest在iOS自定义协议中使用时不影响defaultSession

` 
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; 

config.timeoutIntervalForRequest = 10.0; 
config.timeoutIntervalForResource = 10.0; 
config.HTTPMaximumConnectionsPerHost = 2; 
config.connectionProxyDictionary = proxyToUse; 

[NSURLProtocol setProperty:@YES forKey:@"MyURLProtocolHandledKey" inRequest:mReq]; 

if(!_mySession) { 
    _mySession = [NSURLSession sessionWithConfiguration:config 
           delegate:self 
         delegateQueue:nil]; 
} 

`

当App正在数以百计的要求,有逐渐增加的响应时间,服务从自定义协议的请求。我可以看到60秒的最大超时时间。这些配置参数没有影响。

+0

没有看到你的代码的其余部分,这很难说,但你...你确定这些请求并非所有进入单独的会话?另外,请记住,如果您一次只限制两个活动连接,则响应时间的逐渐增加正是您所期望的。其他请求将排队等待发送的机会。 – dgatwood

某些URLSessionConfiguration属性应该在配置用于创建新的URLSession之前设置。例如,要建立一个timeoutIntervalForRequest你必须做到以下几点:

let configuration = URLSessionConfiguration.default 
configuration.timeoutIntervalForRequest = 2 
let session = URLSession(configuration: configuration)