Максимальное количество одновременных соединений Http на хост, Alamofire?

Я хотел бы увеличить максимальное количество одновременных подключений на хост в Swift, которое по умолчанию ограничено 4 в iOS.

Я использую Alamofire.

  • Я попытался увеличить HTTPMaximumConcurrentPerHost до 50.
  • Я пробовал метод in loop и все еще ограничен.
  • Также попытался обернуть запрос URL-адреса в очередь операций и по-прежнему ограничивал соединения.

Я видел библиотеку, написанную на Obj-C, которая сообщает, что они используют более 4 соединений одновременно на хост, но я не программирую Obj-C, чтобы узнать, реально это или нет. Библиотека на Github

Есть ли решение, которое использует больше одновременных подключений на хост?

Apple говорит, что это ограничение на сеанс, поэтому этот предел можно превысить, используя несколько сеансов для всего приложения.

Как этого можно добиться?

* Я проверил скорость интернета и отклик сервера с помощью Charles, и он составил 250 запросов в секунду, при использовании вышеуказанных методов в симуляторе это было 22 запроса в секунду.


person Ahmed_Shemari    schedule 14.04.2017    source источник


Ответы (1)


Кажется, это решение:

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.HTTPMaximumConnectionsPerHost = 50
configuration.timeoutIntervalForRequest = 30
let manager = Alamofire.Manager(configuration: configuration)

Имейте в виду, что если фреймворк не использует асинхронный ввод-вывод (и я не думаю, что NSURLSession делает), вы ограничены количеством ядер в процессоре относительно того, сколько потоков вы можете выполнять одновременно. В приведенном выше ответе предлагается обернуть запросы в NSOperation, чтобы вы могли более детально управлять параллелизмом с помощью NSOperationQueue.

person David S.    schedule 14.04.2017