Я работаю над приложением UPNP iOS. Я пытаюсь загрузить видео с удаленного сервера и затем отправить его клиенту с помощью GCDWebserver.
Ниже приведены шаги:
- Получен запрос диапазона от клиента.
- Инициировал GCDWebServerStreamedResponse, создал URLSession и запустил его асинхронно.
- Передача данных в GCDWebServerAsyncStreamBlock в didReceiveData.
Соединение отправило данные некоторое время, но затем я сталкиваюсь со следующей ошибкой:
Ошибка при записи в сокет 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);
}
Я нашел похожий вопрос, но на который нет ответа ,