![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
Друзья, прошу помощи по следующей проблеме - нужно организовать взаимодействие с сервером (отправку/прием данных в xml). По запросу юзера(нажатию кнопочки) Flash-клиент вызывает сценарий PHP, который в ответ отдает ему XML. Запросы пользователи могут делать довольно часто (нажимать кнопочку раз в 0,5-1 сек.), а сервер возвращает довольно большой пакет данных.
Вопрос, собственно, в том, каким образом сбрасывать соединение, если пользователь вызывает новый запрос из флэшки. Т.е. предположим юзер нажал кнопку обновления -> пошел запрос к скрипту script.php -> скрипт отдает данные XML, пакет по медленному (скажем модемному) соединению идет к флэшке... и вдруг пользователь не дождавшись поступления старых данных требует обновления и вновь посылает запрос. Что произойдет с этим недокачанным пакетом? Нужно как-то его сбросить... На флэше сделано так: создается LoadVars, определяется обработчик onLoad к нему, вызывается load(script.php). Если пользователь делает новый вызов скрипта LoadVars, то убивается (delete LoadVars_obj) и тут же снова создается, опять определяется обработчик onLoad к нему и вызывается load(script.php). Вопрос в том что при многократном быстром нажатии кнопки "обновить" возникают какие-то задержки (тест на модеме) в получении данных. Сдается мне, что как-то оно глючит... Не может ли быть случайно так, что объект принимает сразу несколько переданных сервером пакетов (т.е. часть старых, вызов которых был инициирован уже удаленной копией объекта)? |
|
|||||
|
Если ты думаешь обмениваться XML-данными, то LoadVars тут явно не подходит. Для этих целей нужно использовать классы XML или XMLSocket. Второй класс более предпочтителен, так как умеет "держать" соединение, а не инициировать его каждый раз, когда возникает необходимость обмена данными с сервером.
|
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
Ой, ой ой... XML конечно, а не LoadVars
Опечатка! Туплю... Сокет не подходит, к сожалению. |
|
|||||
|
Для отбрасывания "устаревших" данных можно попробовать отсылать серверу какой-либо идентификатор (например, номер) соединения, чтобы сервер, увидев что запрашиваются новые данные, когда старые еще не отправлены, заканчивал передачу "старых" данных и начинал передавать новые.
|
|
|||||
|
Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
|
А не проще ли заблокировать кнопку обновления до тех пор, пока не получим результат
А вообще неплохо использовать Flash Remoting + php, это продуктивнее, потому из флэша напрямую будешь вызывать php функции и получать результирующий объект, который не надо парсить, как XML. Соответственно будет работать быстрее чем связка Flash<->XML<->php, где мы используем XML как промежуточное звено.
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_. |
|
|||||
|
Madasan, а где можно про Flash Remoting информацию достать?
|
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
Данные для всех этих запросов получаются одинаковыми, никаких обновления на сервере за короткий промежуток не происходит. Вопрос в том что
delete XMLObj; XMLObj = new XML(); XMLObj.load("script.php"); однозначно убивает старый объект XML? невостребованная партия данных не может попасть во вновь созданный XML? (который уже успел отправить новый запрос load) |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
кнопка сейчас и блокируется на несколько секунд, но хочется теорию этого вопросы понять... вдруг данные от предыдущего вызова "задержаться" и придут уже во вновь созданный объект? или такого быть не может?
|
|
|||||
|
Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
|
>'Madasan, а где можно про Flash Remoting информацию достать?'
Да вот на русском не густо http://novemberain.com/tools/index.php/Flash_Remoting А на английском найти не сложно. http://www.adobe.com/devnet/flash/articles/amfphp.html
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_. |
|
|||||
|
Спасибо
|
![]() |
![]() |
Часовой пояс GMT +4, время: 08:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|