Вопрос по objective-c, cocoa, macos – Максимальное количество одновременных NSURLC подключений к одному хосту?

8

Я работаю с проблемой в приложении OS X, которое создает несколько постоянных подключений к одному и тому же хосту, используя NSURLConnection. Я создаю отдельное соединение для разных комнат, и оно остается подключенным все время, пока комната открыта для использования потокового API. При открытии многих комнат он перестает работать правильно.

Я создал отдельное приложение-пример, которое создает 10 подключений, и оно позволяет работать только 6 подключениям, а остальные находятся в очереди. Кто-нибудь знает, есть ли способ переопределить этот предел? Я не могу найти это нигде. Единственный обходной путь, который я обнаружил, заключается в том, что он, по-видимому, относится к имени хоста, поэтому тестирование выполняется с помощью "localhost". и "127.0.0.1"; позволяет 6 подключений на хост. Я загрузил пример проекта с клиентом и сервером здесь -http://cl.ly/1x3K0D1F072V3U2T0C0I.

Преодолевает ли AFNetworking этот предел? Разве он не использует NSURLConnection под его запросами? HazA
Может быть, я не очень хорошо знаю node.js. Но это также происходит с другим сервером, который не находится под моим контролем. Я написал этот клиент / сервер, чтобы попытаться воспроизвести в простейшем случае. Zach Waugh
@ Zach Воу, я проверяю твой код :) Ты уверен, что это не имеет никакого отношения к твоему server.js? (Узел) Я запустил твой server.js, но я также получаю максимум 6 соединений. self
Извините, должен был упомянуть, что это на OS X. Обновленный вопрос. Zach Waugh
платформа iOS или OSX? owen gerig

Ваш Ответ

2   ответа
5

что похоже на ту же проблему, но на iOS. Я обнаружил, что вы не можете открыть более 5 соединений одновременно. Соединения не обязательно должны указывать на один и тот же домен. Все, что после этого будет в очереди. Таким образом, если у вас открыто 5 соединений с чрезвычайно медленной конечной точкой, любые другие соединения не будут проходить.

Radar:http://openradar.appspot.com/radar?id=2542401

Ответ Apple:

This is the effect of our NSURLConnection connection cache. It is expected. We expect to address this type of configuration with new API.

Я спросил, могут ли они дать мне больше информации (она меняется? Тип соединения влияет на это?), И они ответили:

Unfortunately, we can't give details about the connection limit behavior.

User agents in general (Chrome, Firefox, Safari) use six simultaneous TCP connections per hostname, with potential one-offs.

0

используя CFNetwork API (CFHTTPMessage).

Вот руководство по программированию CFNetwork. https://developer.apple.com/library/mac/documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html#//apple_ref/doc/uid/TP30001132

Кстати, если вы решите использовать CFNetwork, вам нужно будет обойти прокси-сервер и пройти аутентификацию.

Жаль, что это не могло помочь!

Похожие вопросы