Added truly asynchronous support to GCDWebServerStreamedResponse

This commit is contained in:
Pierre-Olivier Latour
2014-10-14 12:40:51 -07:00
parent c4bf7b11e2
commit 514c09dc39
3 changed files with 60 additions and 5 deletions
+19 -1
View File
@@ -311,7 +311,7 @@ int main(int argc, const char* argv[]) {
fprintf(stdout, "Running in Streaming Response mode");
webServer = [[GCDWebServer alloc] init];
[webServer addHandlerForMethod:@"GET"
path:@"/"
path:@"/sync"
requestClass:[GCDWebServerRequest class]
processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
@@ -327,6 +327,24 @@ int main(int argc, const char* argv[]) {
}];
}];
[webServer addHandlerForMethod:@"GET"
path:@"/async"
requestClass:[GCDWebServerRequest class]
processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
__block int countDown = 10;
return [GCDWebServerStreamedResponse responseWithContentType:@"text/plain" asyncStreamBlock:^(GCDWebServerBodyReaderCompletionBlock completionBlock) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSData* data = countDown ? [[NSString stringWithFormat:@"%i\n", countDown--] dataUsingEncoding:NSUTF8StringEncoding] : [NSData data];
completionBlock(data, nil);
});
}];
}];
break;
}