2013-05-15 57 views
2

我试图找到一种方法来打开与Web服务的连接,并让该服务根据需要发送JSON对象。使用AFNetworking为单个请求处理多个JSON响应

说我从服务请求20配置文件。与其等待服务构建全部20个服务,该服务将构建第一个配置文件并将其重新放回到客户端,直到创建所有20个配置文件。

我一直在使用AFNetworking,并希望继续使用它。最后,如果需要添加,我希望将此组件回馈给社区。

任何人有任何想法处理这样的事情?现在我有一个服务每隔几秒推送一次JSON来测试。

回答

3

一对夫妇的想法:

  1. 如果你想打开的连接,并从服务器传输的响应,基于套接字的模型似乎是有道理的。有关示例,请参阅Ray Wenderlich的How To Create A Socket Based iPhone App and Server(服务器端的内容可能会根据您的服务器体系结构进行更改,但它举例说明)。但是AFNetworking是建立在一个NSURLConnection框架之上的,而不是一个套接字框架,所以如果你想将你的套接字类整合到这个框架中,就会涉及一个不可忽视的工作量。

  2. 另一个iOS特定的模型是使用Apple的推送通知服务(请参阅Local and Push Notification Programming Guide的推送相关部分)。

  3. 第三种方法是继续使用拉机制,但如果您正在寻找一种以非连续方式使用多个Feed的方法,那么会创建多个AFURLConnectionOperation(或相应的子类)操作,并且同时提交它们(您可能希望限制队列上的maxConcurrentOperations为4或5,因为iOS只能有这么多的并发网络操作)。通过同时发布这些消息,可以减轻网络延迟导致的延迟。如果你采用这种方法,为了线程安全可能需要注意,但这可能比上述两种技术更容易。

+0

非常好。我很欣赏这些想法! –

1

这听起来像是一个套接字(或一个网络套接字,任何更容易)的工作。

我不相信AF有这方面的支持。这可以在NSURLConnection的didRecieveData方法中实现。每次接收到一段数据时都会触发此事件,因此您可以从这一点开始进行解析和消息传递。不幸的是,我想不出一个非常干净的方式来实现这一点。

也许更好的方法是通过分页式技术处理适当的重新请求。您可以请求1 /页面的配置文件页面1,然后请求页面2等。然后,您可以控制流程,即如果您想以并列方式请求全部或者请求一个,然后按顺序请求一个。这将是更少的工作来执行,并会(在我看来)更清洁,更容易维护。

+0

感谢Adam的想法!不知道为什么我在问之前没有考虑这个问题!在这里试验。 –