//在URLSessionTask 的delegate中实现
func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
let lookupDNSTime: Int = dateToMilliSecondsDif(dateStart: metrics.transactionMetrics[0].domainLookupStartDate , dateEnd: metrics.transactionMetrics[0].domainLookupEndDate) ?? 0
print("\("DNS查询时间 =")\(lookupDNSTime)")
let connectionTime: Int = dateToMilliSecondsDif(dateStart: metrics.transactionMetrics[0].connectStartDate , dateEnd: metrics.transactionMetrics[0].connectEndDate) ?? 0
print("\("connectionTime")\(connectionTime)")
let requestTime: Int = dateToMilliSecondsDif(dateStart: metrics.transactionMetrics[0].requestStartDate , dateEnd: metrics.transactionMetrics[0].requestEndDate) ?? 0
print("\("requestTime")\(requestTime)")
let responseTime: Int = dateToMilliSecondsDif(dateStart: metrics.transactionMetrics[0].responseStartDate , dateEnd: metrics.transactionMetrics[0].responseEndDate) ?? 0
print("\("responseTime")\(responseTime)")
}
//计算时间的私有函数
private func dateToMilliSecondsDif(dateStart: Date?, dateEnd: Date?) -> Int? {
if dateStart != nil && dateEnd != nil {
let intervalEnd:TimeInterval = dateEnd!.timeIntervalSince1970
let intervalStart:TimeInterval = dateStart!.timeIntervalSince1970
let end:Int = Int(intervalEnd)
let start: Int = Int(intervalStart)
return end * 1000 - start * 1000
}else{
return nil
}
}