我正在运行OS X应用程序中的一个问题,该应用程序使用NSURLConnection创建与同一主机的多个持久连接。我为不同的房间创建了一个单独的连接,并且在房间打开的整个过程中它保持连接以使用流API。打开许多房间时,它会停止正常工作。
我创建了一个单独的示例应用程序,它创建了10个连接,它似乎只允许6个连接工作,其他连接排队。有谁知道是否有办法超越这个限制?我无法在任何地方找到它。我发现的唯一解决方法是它似乎是每个主机名,所以用" localhost"进行测试。和" 127.0.0.1"每个主机允许6个连接。我在这里上传了一个带有客户端和服务器的示例项目 - http://cl.ly/1x3K0D1F072V3U2T0C0I。
答案 0 :(得分:5)
我提交了一个雷达,看起来像是在iOS上的相同问题。我发现你不能同时打开超过5个连接。连接不必指向同一个域。之后的任何事情都会排队。因此,如果您有5个连接打开到极慢的端点,则任何其他连接都不会通过。
雷达:http://openradar.appspot.com/radar?id=2542401
Apple回复:这是我们的NSURLConnection连接缓存的效果。这是预料之中的。我们希望使用新的API来解决这种类型的配置。
我问他们是否可以再给我信息(它是否有所不同?连接类型是否会影响它?)他们说:
不幸的是,我们无法提供有关连接限制行为的详细信息。
一般用户代理(Chrome,Firefox,Safari)每个主机名使用六个同时的TCP连接,可能是一次性的。
答案 1 :(得分:0)
您可以使用CFNetwork API(CFHTTPMessage)来打破此限制。
这是CFNetwork编程指南。 https://developer.apple.com/library/mac/documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html#//apple_ref/doc/uid/TP30001132
顺便说一句,如果您决定使用CFNetwork,则需要解决代理问题并进行身份验证。 希望这可能有所帮助!