У меня проблема. Я прочитал много тем о stackoverflow об этой проблеме, но ничего не помогло. Я пытаюсь реализовать взаимодействие клиент-сервер через соединение кометы. У меня есть экземпляр, который отвечает за отправку сообщений и экземпляров, которые отвечают за получение сообщений. Процесс следующий: - Отправить экземпляр отправляет запрос GET серверу, сервер отвечает на экземпляр приема. Первый звонок работает отлично, я получаю первый ответ и могу получить нужные мне данные, но следующий запрос не заставит мой callReceiveData вызвать вызов. Но я вижу, что сервер отправил данные, я вижу это в журналах сервера, и я вижу это в wirehark на клиентской машине. Интересно: первый ответ не вызывал мой обратный вызов, прежде чем я добавил «content-length: 0» в ответ. Недокументированная функция NSUrlConnection? Что еще следует рассмотреть, чтобы заставить NSUrlConnection считать, что ответ действительно? Альтернатива: сила для извлечения данных из сокета, но я не знаю, если это возможно с NSURLConnection (люди немы об этом)ios NSURLConnectionDataDelegate didReceiveData callback not called
настойчивый код соединения:
NSURL* requestUrl = [NSURL URLWithString:[[NSString alloc] initWithUTF8String:rq->url.c_str()]];
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:requestUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:600];
m->connection = [[NSURLConnection alloc] initWithRequest:request delegate:request_delegate() startImmediately:NO];
[m->connection scheduleInRunLoop:[NSRunLoop mainRunLoop]
forMode:NSDefaultRunLoopMode];
[m->connection start];
решил: трюк был - серверу нужно установить заголовок «длина контента» на что-то большое, потому что клиент получает пакеты и увеличивает количество полученных байтов и после получения количества байтов, установленных в заголовке - он больше не будет отвечать. Опускание раздела длины содержимого блокирует вызовы делегатов. Вот почему. –
Это не то, как должен использоваться протокол HTTP. Это протокол с запросом. NSURLConnection может использоваться только для одного запроса-ответа. То, что вы делаете, довольно волосатое. Я не буду рассчитывать на ваши наблюдения. – CouchDeveloper