2

Web サービスへの接続を開き、そのサービスが必要に応じて JSON オブジェクトを送信する方法を見つけようとしています。

サービスから 20 個のプロファイルを要求するとします。サービスが 20 個すべてを作成するのを待つ代わりに、サービスは最初のプロファイルを作成し、20 個すべてが作成されるまでそれをクライアントに返します。

AFNetworking を使用しており、引き続き使用したいと考えています。最終的には、追加が必要な場合は、このコンポーネントをコミュニティに提供したいと考えています。

このようなことに取り組むアイデアはありますか?現在、テストのために数秒ごとに JSON をプッシュするサービスがあります。

4

3 に答える 3

3

いくつかの考え:

  1. 接続を開いてサーバーからの送信に応答したい場合は、ソケットベースのモデルが理にかなっているようです。例については、 Ray Wenderlich のHow To Create A Socket Based iPhone App and Serverを参照してください (サーバー側のものはサーバー アーキテクチャに基づいて変更される可能性がありますが、例が示されています)。しかし、AFNetworking はNSURLConnectionソケット フレームワークではなくフレームワーク上に構築されているため、ソケット クラスをそのフレームワークに統合したい場合は、かなりの量の作業が必要になります。

  2. もう 1 つの iOS 固有のモデルは、Apple のプッシュ通知サービスを使用することです (ローカルおよびプッシュ通知プログラミング ガイドのプッシュ関連のセクションを参照してください)。

  3. 3 番目のアプローチはプル メカニズムを使用することですが、複数のフィードを非連続的な方法で使用する方法を探している場合は、複数のAFURLConnectionOperation(または適切なサブクラス) 操作を作成し、それらを同時に送信します ( maxConcurrentOperationsiOS は非常に多くの同時ネットワーク操作しかできないため、キューを 4 または 5に制限したい場合があります)。これらを同時に発行することで、ネットワークの遅延に起因する遅延の多くを軽減します。このアプローチを追求する場合、スレッド セーフに注意する必要があるかもしれませんが、上記の 2 つの手法よりもおそらく簡単です。

于 2013-05-15T18:53:04.043 に答える
1

これは、ソケット (または、より簡単な Web ソケット) の仕事のように思えます。

AFでこれがサポートされているとは思いません。これは、NSURLConnection の didRecieveData メソッドで実装できます。これはデータが受信されるたびにトリガーされるため、その時点から解析とメッセージングを行うことができます。残念ながら、これを実装するための非常にクリーンな方法は考えられません。

おそらく、これに対するより良いアプローチは、ページネーション スタイルの手法を使用して適切な再要求を処理することです。1/page でプロファイルのページ 1 をリクエストし、次にページ 2 をリクエストする、というようにします。その後、フローを制御できます。つまり、すべてを並行してリクエストするか、1 つをリクエストしてから順番にリクエストする場合です。これは実装する手間が少なくなり、(私の意見では)よりクリーンで維持しやすくなります。

于 2013-05-15T18:27:07.597 に答える
0

AFNetworking は、 を使用したリクエストのバッチ処理をサポートしてい AFHTTPClient -enqueueBatchOfHTTPRequestOperations:progressBlock:completionBlock:ます。

このメソッドを使用して、個々の操作ごとに戻るだけでなく、バ​​ッチ内のすべての操作が終了したときにも戻ることができます。

于 2013-05-23T16:14:19.027 に答える