![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2012
Сообщений: 14
|
Пишу клиент для игры. Desktop версию на AIR и веб версию.
Связь с сервером осуществляется через HTTP запросы по так называемой технике Long polling. Клиент отправляет запрос, но ответ приходит только в тот момент, когда на сервере происходят какие-то изменения. Когда дело дошло до игрового чата столкнулся с такой проблемой: оказывается флеш может одновременно обрабатывать только 2 подключения. Если я жду ответа от состояния игры и от чата, то третий запрос на действие клиента, флеш отправит только после того, как придет ответ от чата либо от состояния игры. Самое загадочное - это, если запустить Fiddler2 (программка для отслеживания HTTP соединений), то флеш сможет одновременно обрабатывать сразу 4 соединения! Каким образом он влияет на флеш - неизвестно. По этому я проблему не сразу заметил. Подскажите, как увеличить количество обрабатываемых одновременно запросов? |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 393
|
Это, если я не ошибаюсь, одна из рекомендаций http 1.0, перекочевавшая в 1.1 -количество одновременных подключений к серверу лимитируется, причем это везде проявляется - в браузере, итд. Fiddler2, скорее всего, раз работает проксей, заодно и увеличивает этот параметр.
Как выход- поскольку понятие "1 сервер" определяется исключительно полным доменом, стоит сделать несколько зеркал у вашего сервера - обращаетесь к нему domain.ru - добавьте zerkalo.domain.ru и получаете в два раза больше коннектов. Вроде бы так |
|
|||||
|
Регистрация: Nov 2012
Сообщений: 14
|
Вряд ли..
Я провел небольшой эксперимент: Вызвал 4 раза тестовый запрос, который через 20сек. возвращает HelloWord и потом вызвал google.com (другой домен). Флеш послал запрос на гугл только после того, как отработают 4 предыдущих запроса. Без Фиддлера ждать запроса на гугл придется еще в 2 раза дольше. Флеш сам делает какую-то очередь и не отправляет следующий запрос, пока не отработают предыдущие. Скорее всего зеркала не помогут... import flash.net.URLLoader; import flash.net.URLRequest; var loader1:URLLoader = new URLLoader(); var loader2:URLLoader = new URLLoader(); var loader3:URLLoader = new URLLoader(); var loader4:URLLoader = new URLLoader(); var loader5:URLLoader = new URLLoader(); loader1.load(new URLRequest("http://-my_test_domain-/hello/world")); loader2.load(new URLRequest("http://-my_test_domain-/hello/world")); loader3.load(new URLRequest("http://-my_test_domain-/hello/world")); loader4.load(new URLRequest("http://-my_test_domain-/hello/world")); five_request(); function five_request():void{ loader5.load(new URLRequest("http://google.com/")); } |
|
|||||
|
Modus ponens
|
Флеш складывает все запросы посланные в одном кадре в одну очередь (на сколько я знаю, и для NetConnection), но есть шанс, что и для URLLoader так же. Попробуйте в следующем кадре запрос послать.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Nov 2012
Сообщений: 14
|
Фишка с запросом в следующим кадре не помогла...
Вот тестовый лонг пулл: http://iddqd.dyndns-at-work.com:28000/hello/world. Он не всегда работает... Сейчас через 20 сек. ошибка приходит, но потестить можно... |
|
|||||
|
Регистрация: Nov 2012
Сообщений: 14
|
У меня такого нет. Серверной частью не занимаюсь.
|
|
|||||
|
Регистрация: Jun 2011
Сообщений: 127
|
А если в вашем примере сразу послать 5 запросов на разные домены, а не "http://-my_test_domain-/hello/world" обработает ли ваше приложение их одновременно или тоже по 2?
На самом деле я тоже согласен с Krusty и слышал, что браузеры могут отправлять одновременно максимум по 2 запроса к одному домену. Именно потому иногда файлы сайта раскидываются по поддоменам "http://subdomain1.-my_test_domain-/hello/world" "http://subdomain2.-my_test_domain-/hello/world" "http://subdomain3.-my_test_domain-/hello/world" "http://subdomain4.-my_test_domain-/hello/world" Добавлено через 53 секунды раскидываются по поддоменам чтобы быстрее шла загрузка страницы |
|
|||||
|
Регистрация: Nov 2012
Сообщений: 14
|
Тоже будет только 2 запроса обрабатывать. И тут дело не только в браузере. У десктоп рпиложения на AIR те же проблемы...
|
![]() |
![]() |
Часовой пояс GMT +4, время: 08:10. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|