GCDWebserver,用于从远程服务器流式传输

时间:2020-02-22 15:14:17

标签: ios objective-c server gcdwebserver

我正在使用UPNP iOS应用程序。我正在尝试从远程服务器下载视频,然后使用GCDWebserver将其发送到客户端。

以下是步骤:

  • 从客户端接收到范围请求。
  • 启动GCDWebServerStreamedResponse并创建一个URLSession并使其异步运行。
  • 将数据传递到didReceiveData中的GCDWebServerAsyncStreamBlock。

连接发送了一段时间数据,但随后我遇到以下错误:

写入套接字29时出错:管道损坏(32)

我进行了一些研究,发现只有GCDWebserverFileResponse才能满足Content-Range。

以下是代码:

GCDWebServerStreamedResponse *streamedResponse = [GCDWebServerStreamedResponse responseWithContentType:@"video/mp4" asyncStreamBlock:^(GCDWebServerBodyReaderCompletionBlock completionBlock) {
        self.cb = completionBlock;
        NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
        NSURLSession *urlSession = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[NSOperationQueue mainQueue]];
        NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:remoteUrl]];
        [urlRequest addValue:[request.headers objectForKey:@"Range"] forHTTPHeaderField:@"Range"];
        NSURLSessionDataTask *dataTask = [urlSession dataTaskWithRequest: urlRequest];
        [dataTask resume];
}];

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {
    NSLog(@"got data size == %lu", data.length);
    self.cb(data, nil);
}

我发现了类似的问题,但未得到答复。

0 个答案:

没有答案