我一直在关注Apple的WWWDC 2015 Session 711:“与NSURLSession联网”。接下来,发言者提到了URLSessionStreamTask
,它可以用于直接套接字I / O.他提到了如何将(HTTP)代理连接转换为流任务。
幻灯片包含:
NSURLSessionStreamTask
DataTask conversion
NSURLSessionDataTask may be converted to a stream task
• Use NSURLSession to get through HTTP proxies
Conversion can occur when response is received
下一张幻灯片包含部分示例代码:
func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask,
didReceiveResponse response: NSURLResponse,
completionHandler: (NSURLSessionResponseDisposition) -> Void) {
completionHandler(.BecomeStream)
}
func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask,
didBecomeStreamTask streamTask: NSURLSessionStreamTask) {
}
我想知道如何创建代理连接。并使用“系统偏好设置”中的数据:网络:高级:代理面板(如果可能)。 (不仅仅是“HTTP”代理,而是具有相同格式的其他4个代理。)
由于他们通常使用HTTP而不是HTTPS,这样的连接会触发ATS(App Transport Security)吗?
答案 0 :(得分:0)
他们所谈论的是对WebSocket protocol的支持,它允许您打开与Web服务器的连接,然后将该连接升级到Web套接字,从而允许您直接与任何脚本进行通信或CGI程序在另一端,不必遵循传统的请求 - 响应方式。
我认为他们试图说的是,如果您通过实际支持WebSocket通信的代理发送HTTP(ick)请求,iOS知道如何让代理正确升级连接。这种相同的升级机制通常用于通过支持HTTP代理发出HTTPS请求,如果你建立HTTPS连接,后续的WebSockets升级应该无论代理什么都可以使用,因为代理已经只是通过这一点来回反复。