2

私は、サーバーからデータをストリーム配信する(e.x.ECGDataのような)iPhoneアプリケーションを開発しており、これをスクリーン上に表示する(つまり、プロットすることを意味します)、つまりライブストリーミングです。そのために、NSURLConnectionを使用しています。いつ使いますか? NSURLConnectionと低レベルのソケットAPI

私が直面している問題は、データがサーバーからiPhoneにすばやく送信されているため、キャッシュバッファが急速に増加しているため、表示されたデータがサーバーからの実際のデータより遅れています。しばらくすると、アプリケーションの速度が遅くなり、メモリの警告が表示されます。

私の質問は、サーバーからこのデータをどのように処理すればよいですか? NSURLConnectionを続行するか、より低いレベルのソケットプログラミングを行う必要がありますか?

答えて

0

私はASIHttpRequestストリーミングを使用します。デリゲートメソッドrequest:didReceiveData:を実装すると、データが入ってきたときにデータを取得し、必要に応じて収縮させて表示して表示することができます。キャッシュが必要な場合はいつでもファイルに保存できます。

+0

うん、私はデータを収集し、解析し、それをNSURLConnectionを使って画面にプロットするのと同様の段階を経ています。私はASIHttpRequestが同様になることを疑っている、と私は上記と同じ問題を維持しますか? – Mahesh

+1

なぜASIHTTPRequestヘルプを使用する必要がありますか? NSURLConnectionで同じことができます。 – Codo

1

私はあなたが、フロー制御のいくつかの並べ替えを実装する提案:

最も簡単な方法は、あなたのバッファがいっぱいである場合、データをドロップすることです。ビデオストリームの場合、フレームをドロップすることができます。あなたのデータで同じことが可能かどうかはわかりません。

別のアプローチは、あなたがそれのために準備ができているときにデータを読み取ることができCFSocketクラスに(あなたが反応する必要があるフレームワークコントロール)NSURLConnectionのイベントベースのAPIから切り替えることです。低レベルなので、別のスレッドと、バッファがいっぱいになってスリープするような高度なロジックが必要になり、メインスレッドがより多くのデータを表示してバッファにスペースを増やしたときに起動するようになります。このアプローチでは、基本的にTCPのフロー制御メカニズムの上に構築されています。

さらに別の方法として、送信するデータの量をより詳細に制御できるネットワークプロトコルを使用する方法があります。

関連する問題