2013-05-15 54 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的想法!不知道爲什麼我在問之前沒有考慮這個問題!在這裏試驗。 –