Я занимаюсь разработкой приложения для веб-работ с использованием phonegap и jquerymobile. Я использую soapclient.js для создания запросов мыла на мой бэкэнд-сервер. Мы столкнулись с проблемой тайм-аута, и во время детального расследования мы заметили, что одиннадцатый запрос AJAX не получает ответа. Чтобы поставить вещи в нужное место, мы повторили тест с теми же повторениями вызовов, чтобы мы знали, что конкретный запрос работает.
мы используем низкоуровневый самостоятельно созданный объект xmlhttprequest и до вызова send () ошибок не было. Слушатель изменений onreadystate не вызывается для 11-го вызова.
Время от времени, когда мы достаточно долго ждали, этот 11-й звонок удваивался примерно через 5 минут или около того, заставляя меня поверить, что в поле браузера BlackBerry есть утечка соединения.
Я подозреваю, что существует ограничение в 10 соединений (непараллельно), которое можно установить. Через некоторое время, когда запускается очистка BB-мусора, он очищает несколько старых соединений, и выполняется новое соединение, ожидающее в очереди.
Подробнее
- Я проверил из журналов сервера, что в течение этого периода ожидания
сервер не получил запрос
- Я подтвердил, что это
происходит независимо от того, использую ли я Wi-Fi или GPRS
- Приложение снова начнет работать, если я закрою его и снова открою, но только до
первые 10 запросов
Я попытался прервать запрос, если он прошел мой тайм-аут, вызвав abort () и установив его в null. Но даже тогда я не могу сделать одиннадцатый запрос, если не буду ждать некоторое время.
Я бы поверил любым другим причинам, таким как JavaScript, ожидающий поток пользовательского интерфейса и т. Д., Если бы такое поведение было случайным. Но он воспроизводится на 99% по 11-му запросу, и я несколько раз перепроверил код, чтобы увидеть, есть ли какая-либо переменная или число, сообщаемое из приложения. Предупреждение работает нормально до .send, но обратный вызов не вызывается.
Сейчас я пытаюсь создать очень простое приложение, которое делает ajax-вызовы, чтобы увидеть, является ли это поведение специфичным для моего приложения или это ограничение платформы, но если у кого-то есть такой предыдущий опыт, пожалуйста, поделитесь.