NSURLConnection一次限制为单个连接?

时间:2012-01-22 00:23:59

标签: ios nsurlconnection comet

好的 - 让我们重新解释整个问题吗?

有什么方法可以判断iOS在完成后是否持有NSURLConnection&退回了它的数据?

我有2个NSURLConnections我正在实例化&用服务器调用服务器。第一个启动与服务器的连接,然后进入COMET样式长轮询等待,而另一个用户与请求交互。第二个进入服务器并触发一个取消机制,该机制安全地结束第一个请求,并使两个成功返回“您已取消”消息。

在快乐路径的情况下,永远不会点击取消按钮。但是可以单击它并退出当前操作。

这整个场景很有效。然后再也不会工作(直到应用程序重置)。

好像第一次通过其中一个连接永远不会被释放,我们从那时起仅限于一个连接,因为其中一个被锁定。


BTW我已经尝试过NSURLConnection,AFNetwork,MKNetworkKit,ASIHTTPRequest - 没有任何其他框架的运气。 NSURLConnection应该做我想要的。这只是......不放过我的一个关系。

3 个答案:

答案 0 :(得分:2)

我怀疑步骤2中的取消请求是打开HTTP连接。

我不确切知道NS *类如何与HTTP/1.1 recommendation of at most two simultaneous connections一起工作,但我们假设他们最多只执行两个连接。假设实例A中的触发代码(示例中的步骤1和3)在自身之后清除,但实例B中的取消代码(步骤2和4)使连接保持打开状态。这可以解释你在观察什么。

如果我是你,我会将步骤1中运行的代码与步骤2中运行的代码进行比较。我敢打赌,他们在自己清理后的方式方面存在差异。

答案 1 :(得分:1)

如果我没错, 只要“Keep-Alive”标题指示它,iOS / Mac就会保留NSURLConnection。

但作为iOS开发者,您不应该担心。你有什么理由想知道吗?

答案 2 :(得分:0)

所以遗憾的是,由于在我的所有测试中都找不到真正的解决方案,我必须实施简单的轮询来解决问题。

我还必须在服务器上实现仅iOS的API。

这归结为一个API,用于发送命令并将其放入服务器上的队列,然后在客户端上使用NSTimer以定期间隔检查排队项的状态。

在我了解如何使用长轮询在iOS上建立多个连接之前,这是唯一可行的解​​决方案。一旦我得到了相当多的积分,我很乐意为他们提供解决方案:(