在 HTTPS 主机的情况下创建多个 NSURLSession 对象
Creating multiple NSURLSession objects in case of HTTPS host
我想知道在连接到 HTTPS 主机时创建多个 NSURLSession
对象好吗?我问这个的原因是因为我应该在初始 TLS 握手期间评估服务器证书(服务器接受没有证书的客户端)而我要做的地方是 NSURLSessionDelegate
的 URLSession:didReceiveChallenge:completionHandler:
.
但这意味着我应该创建一些基础 class 来实现此方法,并在将它们用于其他方式(例如 URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:
.
时从中派生所有未来的委托
此外,它还让人担心 URLSession:didReceiveChallenge:completionHandler:
会在我创建的每个 NSURLSession
中被调用,从而产生额外的开销。至于 HTTP/1.1 Connection: keep-alive
应该是默认行为,并且(理想情况下)新创建的 NSURLSession
应该使用来自某些 连接池 的连接。
我在 this 技术问答中找到了问题的答案:
Since NSURLSession maintains it's own TLS session cache...
所以我想如果不想每次执行连接时都进行 TLS 握手,最好保留一个 NSURLSession
。
我想知道在连接到 HTTPS 主机时创建多个 NSURLSession
对象好吗?我问这个的原因是因为我应该在初始 TLS 握手期间评估服务器证书(服务器接受没有证书的客户端)而我要做的地方是 NSURLSessionDelegate
的 URLSession:didReceiveChallenge:completionHandler:
.
但这意味着我应该创建一些基础 class 来实现此方法,并在将它们用于其他方式(例如 URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:
.
此外,它还让人担心 URLSession:didReceiveChallenge:completionHandler:
会在我创建的每个 NSURLSession
中被调用,从而产生额外的开销。至于 HTTP/1.1 Connection: keep-alive
应该是默认行为,并且(理想情况下)新创建的 NSURLSession
应该使用来自某些 连接池 的连接。
我在 this 技术问答中找到了问题的答案:
Since NSURLSession maintains it's own TLS session cache...
所以我想如果不想每次执行连接时都进行 TLS 握手,最好保留一个 NSURLSession
。