Мы используем NSUrlConnection sendAsynchronousRequest для отправки простых запросов POST на наш JS-сервер Node. Проанализировав tcpdumps, мы заметили, что иногда заголовки запросов и тело запроса разделяются на 2 отдельных TCP-пакета.Случайная задержка между заголовками и телом POST
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:url]];
[request setTimeoutInterval:3];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-type"];
[request setHTTPBody:postData];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler: ^(NSURLResponse *response, NSData *POSTReply, NSError *error) { }];
Проблема заключается в том, что иногда заголовки отправляются на сервер, который открывает соединение с нашим API, а затем несколько секунд спустя пакет тело отправляется. Мы видим задержку в 1 секунду между заголовками и телом, случайным образом каждые сотни запросов на стороне сервера. Это самый большой источник задержки в нашем API.
Для большинства запросов заголовки и корпус имеют одинаковый размер (по 200 байт).
Кто-нибудь видел это раньше?
Не отправляйте запрос http в основной очереди. – x4snowman