0

我正在研究一种代理类的东西,它应该通过 NSURLSession 发出请求并逐步将其传输到 GCDWebServer 响应。

问题在于GCDWebServerStreamedResponse responseWithContentType:asyncStreamBlock——它需要一个内容类型,所以必须在我得到标题后调用。并且由于某种原因它异步返回一个完成块,同时可以更快地接收数据。

我的意思是,现在它是这样工作的:

  1. API 调用 GCDWebServer
  2. GCDWebServer 创建一个 NSURLSession 数据任务
  3. 数据任务接收头
  4. 创建 GCDWebServerStreamedResponse
  5. 接收数据块(我想将其推送到流响应中)
  6. 从第 4 步得到完成块

如何在第 4 步之后立即获得完成块?

对不起,如果我错过了任何信息,只是我坚持下去,几乎可以肯定我做错了什么......

4

1 回答 1

2

您可以使用 aNSMutableData作为中间缓冲区:每当数据从 到达时NSURLSession,追加到它,并且无论何时GCDWebServerAsyncStreamBlock被调用,都返回该缓冲区并创建一个新的空缓冲区。

NSLock只要确保使用一个或 GCD 串行队列锁定对该缓冲区的访问即可。

于 2016-10-03T23:36:12.380 回答