在我的iOS应用程序中,我要求发布多个数据包(作为不同的POST请求),目前我正在为每个请求创建不同的NSURL会话,而且我遇到的问题是我有20个或更多的数据包在队列中,当我逐一发布所有这些内容时,只有少数人正在发布,其余的我正在超时错误,
我的分析是,因为HTTPMaximumConnectionsPerHost默认情况下在iOS中是4,即我们在一个会话中只能同时拥有4个并行连接,其他请求将暂停状态并最终导致超时错误
如何更好地处理此问题?
如果我将HTTPMaximumConnectionsPerHost设置为100,那会没关系吗?
以下是发布数据的代码,我通过调用for循环中的以下函数发布多个数据包
func send(_ request: URLRequest, completionHandler handler: handler?) {
let session = URLSession(configuration: URLSessionConfiguration.ephemeral)
let dataTask = session.dataTask(with: request as URLRequest) { (data, response, error) in
handler?(respHandler(inData: data as Data?, inResponse: response, inError: error as NSError?))
}
dataTask.resume()
session.finishTasksAndInvalidate()
}
答案 0 :(得分:0)
编写一个简单的队列,您将放置URLSessionDataTask。 然后从队列中取一个任务,调用resume方法,当任务完成时,对队列中的其他任务执行类似的操作。