2016-09-21 18 views
0

私はNSURLSessionを介してリクエストを行い、GCDWebServerレスポンスに徐々に転送する必要がある、プロキシのようなことに取り組んでいます。GCDWebServerBodyReaderCompletionBlockを同期させるにはどうすればいいですか?

問題はGCDWebServerStreamedResponse responseWithContentType:asyncStreamBlockです。コンテンツタイプが必要なので、ヘッダーを取得した後に呼び出す必要があります。何らかの理由で非同期的に完了ブロックを返しますが、データを高速に受信することができます。

私は意味、今ではこのように動作します:

  1. APIはGCDWebServerへの呼び出し
  2. GCDWebServerがNSURLSessionデータ・タスクを作成します
  3. データタスクヘッダを受け取る
  4. がGCDWebServerStreamedResponse
  5. が受け取るを作成しますデータチャンク(私はストリーミングされた応答にプッシュしたい)
  6. stから完成ブロックを得ましたep 4

手順4の直後に完了ブロックを取得するにはどうすればよいですか?

申し訳

私は...ちょうど私はそれにこだわって、私は何か間違った方法をやっている、ほぼ確信している、

答えて

2

を任意の情報を見逃している場合は、仲介バッファとしてNSMutableDataを使用することができます。データが到着するたびNSURLSessionから追加し、GCDWebServerAsyncStreamBlockが呼び出されるたびにそのバッファを返し、新しい空のバッファを作成します。

そのバッファへのアクセスを、NSLockまたはGCDシリアルキューでロックしてください。

+0

どのようにコンテンツタイプなしでこれを行うことができますか? – norlin

+0

私は自分の答えを更新しました。 – Pol

+0

しかし、それは汚れたハックのように見えますが、少なくとも私はここにその方法を避けるために正確に求めています... – norlin

関連する問題