我正在尝试使用CFNetwork框架创建到同一服务器的多个连接(例如https://www.myserver.com/)。当我尝试建立单个连接时,一切都按预期工作。一旦我尝试添加第二个并发连接,第二个连接就会挂起并等待第一个连接完成。
我尝试添加以下代码以使用唯一ID标记流(在打开流之前):
//self.httpReadStream is an NSInputStream
//self.requestID is an NSNumber<unsigned long long> that increments with every new request
CFReadStreamSetProperty((CFReadStreamRef)self.httpReadStream, CFSTR("StreamTag"), (CFNumberRef)self.requestID);
我从这里得到了这个想法:Apple Mailing List: Overlapping requests on multiple persistent connections?
不幸的是,这不起作用。
请帮忙。如何使用CFNetwork框架实现与同一服务器(主机/端口)的多个并发连接?请注意,出于多种复杂原因我无法使用NSURLConnection (在本文范围之外)。
UPDATE1:
澄清。如果我尝试使用CFNetwork API向同一服务器(https://www.myserver.com)发出两个并发请求(每个请求都有自己的线程和runloop - 由NSOperation提供),第一个请求连接并传输数据,但是第二个请求在第一个请求之后排队,直到第一个请求完成(NSOperationQueue设置为管理4个并发操作)。
两者都不会同时从同一台服务器传输数据。但是,只有当服务器全部不同(不同的主机名,https://www.myserver0.com/和https://www.myserver1.com/)
时,我才可以发出多个并发请求