Я сделал приложение для iPhone, используя Cordova с cordova-plugin-file-transfer, которое загружает видео из Camera Roll. При загрузке через AT&T LTE приложение загружается очень быстро, но затем время ожидания ответа от сервера истекает. Проблема не возникает при загрузке с использованием Telstra LTE или Wi-Fi.
Выполнение захвата пакетов на веб-сервере показывает, что пакеты все еще поступают на сервер через 60 секунд после того, как приложение достигло 100%.
(Я дополнительно проверил это, отобразив количество байтов, отправленных приложением в реальном времени, по сравнению с количеством байтов, поступающих на веб-сервер с использованием учета iptables.)
Поскольку загрузка происходит через HTTPS, я знаю, что это не прозрачный прокси.
Я подозреваю, что у AT&T на одном из своих маршрутизаторов включена «Большая разгрузка приема», а LRO буферизует базовое TCP-соединение для HTTP POST (через HTTPS).
Мой сервер находится в Австралии (~ 200 мс).
У меня были следующие идеи, но я также хотел обратиться к сообществу. 1) Увеличиваем таймаут до чего-то глупого. 2) Разделите загрузку на уровне приложения, чтобы сказать фрагменты размером 1 или 5 МБ. 3) Попытайтесь воспроизвести среду с помощью маршрутизатора Linux в VMWare с включенным LRO на адаптере VMXnet3.
Вы можете предложить что-нибудь еще, что я мог бы попробовать?