NSURLSession HTTPMaximumConnectionsPerHost不能按预期工作

时间:2018-07-31 07:05:30

标签: ios nsurlsession nsurlsessiondownloadtask nsurlsessionconfiguration

我正在尝试下载.m3u8视频的.ts文件。我为每个.ts网址和将会话配置HTTPMaximumConnectionsPerHost属性设置为4的下载任务创建了一个下载任务:

NSURLSessionConfiguration *sessionConfig    = [NSURLSessionConfiguration defaultSessionConfiguration];
  sessionConfig.HTTPMaximumConnectionsPerHost = 4;
_session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:[NSOperationQueue mainQueue]];
  

预期的行为:只能同时下载4 ts,并且一次可以下载   这些下载之一完成,下一个下载项目将被放入   队列,以便在任何时候最多下载4 ts。

     

实际行为:大约同时下载了50多个ts   忽略HTTPMaximumConnectionsPerHost属性。

Charles Timeline的屏幕快照显示了同时发生的多个.ts请求。enter image description here

当我尝试通过将HTTPMaximumConnectionsPerHost设置为3来使用NSURLSession下载图像时,我一次只能看到3次下载。enter image description here

要下载m3u8,我还可以使用AVAssetDownloadURLSession而不是NSURLSession,后者一次只能下载1个.ts。enter image description here

我正在尝试找出:

  

1)为什么HTTPMaximumConnectionsPerHost属性可以正常工作   图像下载,但不适用于.ts下载,因此同时发生了超过4个.ts下载。

     

2)是否有一种方法可以使用AVAssetURLDownloadSession将最大并发.ts下载数量增加到4,该方法仅下载1个.ts

1 个答案:

答案 0 :(得分:2)

除非您已发现API中的错误,否则可能表明您正在多个会话和/或除已配置的会话之外的其他会话中发送.ts请求。会话不知道其他会话中的请求。每次会话最多。