Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.05.2006, 16:29
: hr : вне форума Посмотреть профиль Отправить личное сообщение для : hr : Найти все сообщения от : hr :
  № 1  
Ответить с цитированием
: hr :

Регистрация: 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).
Вопрос в том что при многократном быстром нажатии кнопки "обновить" возникают какие-то задержки (тест на модеме) в получении данных. Сдается мне, что как-то оно глючит... Не может ли быть случайно так, что объект принимает сразу несколько переданных сервером пакетов (т.е. часть старых, вызов которых был инициирован уже удаленной копией объекта)?

Старый 17.05.2006, 16:49
Бармалей вне форума Посмотреть профиль Отправить личное сообщение для Бармалей Посетить домашнюю страницу Бармалей Найти все сообщения от Бармалей
  № 2  
Ответить с цитированием
Бармалей
 
Аватар для Бармалей

Регистрация: Jun 2005
Адрес: Москва
Сообщений: 784
Отправить сообщение для Бармалей с помощью ICQ
Если ты думаешь обмениваться XML-данными, то LoadVars тут явно не подходит. Для этих целей нужно использовать классы XML или XMLSocket. Второй класс более предпочтителен, так как умеет "держать" соединение, а не инициировать его каждый раз, когда возникает необходимость обмена данными с сервером.
__________________
Garbage Collector || AIR (Apollo) Docs

Старый 17.05.2006, 16:52
: hr : вне форума Посмотреть профиль Отправить личное сообщение для : hr : Найти все сообщения от : hr :
  № 3  
Ответить с цитированием
: hr :

Регистрация: Nov 2003
Сообщений: 290
Ой, ой ой... XML конечно, а не LoadVars Опечатка! Туплю... Сокет не подходит, к сожалению.

Старый 17.05.2006, 16:53
Бармалей вне форума Посмотреть профиль Отправить личное сообщение для Бармалей Посетить домашнюю страницу Бармалей Найти все сообщения от Бармалей
  № 4  
Ответить с цитированием
Бармалей
 
Аватар для Бармалей

Регистрация: Jun 2005
Адрес: Москва
Сообщений: 784
Отправить сообщение для Бармалей с помощью ICQ
Для отбрасывания "устаревших" данных можно попробовать отсылать серверу какой-либо идентификатор (например, номер) соединения, чтобы сервер, увидев что запрашиваются новые данные, когда старые еще не отправлены, заканчивал передачу "старых" данных и начинал передавать новые.
__________________
Garbage Collector || AIR (Apollo) Docs

Старый 17.05.2006, 16:59
Madasan вне форума Посмотреть профиль Отправить личное сообщение для Madasan Найти все сообщения от Madasan
  № 5  
Ответить с цитированием
Madasan
 
Аватар для Madasan

Регистрация: Jun 2005
Адрес: в Питере
Сообщений: 981
А не проще ли заблокировать кнопку обновления до тех пор, пока не получим результат
А вообще неплохо использовать Flash Remoting + php, это продуктивнее, потому из флэша напрямую будешь вызывать php функции и получать результирующий объект, который не надо парсить, как XML. Соответственно будет работать быстрее чем связка Flash<->XML<->php, где мы используем XML как промежуточное звено.
__________________
Делай всё быстро, но не торопись!.._/*o|o*\_.

Старый 17.05.2006, 17:07
Бармалей вне форума Посмотреть профиль Отправить личное сообщение для Бармалей Посетить домашнюю страницу Бармалей Найти все сообщения от Бармалей
  № 6  
Ответить с цитированием
Бармалей
 
Аватар для Бармалей

Регистрация: Jun 2005
Адрес: Москва
Сообщений: 784
Отправить сообщение для Бармалей с помощью ICQ
Madasan, а где можно про Flash Remoting информацию достать?
__________________
Garbage Collector || AIR (Apollo) Docs

Старый 17.05.2006, 17:08
: hr : вне форума Посмотреть профиль Отправить личное сообщение для : hr : Найти все сообщения от : hr :
  № 7  
Ответить с цитированием
: hr :

Регистрация: Nov 2003
Сообщений: 290
Данные для всех этих запросов получаются одинаковыми, никаких обновления на сервере за короткий промежуток не происходит. Вопрос в том что
delete XMLObj;
XMLObj = new XML();
XMLObj.load("script.php");

однозначно убивает старый объект XML? невостребованная партия данных не может попасть во вновь созданный XML? (который уже успел отправить новый запрос load)

Старый 17.05.2006, 17:12
: hr : вне форума Посмотреть профиль Отправить личное сообщение для : hr : Найти все сообщения от : hr :
  № 8  
Ответить с цитированием
: hr :

Регистрация: Nov 2003
Сообщений: 290
кнопка сейчас и блокируется на несколько секунд, но хочется теорию этого вопросы понять... вдруг данные от предыдущего вызова "задержаться" и придут уже во вновь созданный объект? или такого быть не может?

Старый 17.05.2006, 17:15
Madasan вне форума Посмотреть профиль Отправить личное сообщение для Madasan Найти все сообщения от Madasan
  № 9  
Ответить с цитированием
Madasan
 
Аватар для Madasan

Регистрация: 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*\_.

Старый 17.05.2006, 17:19
Бармалей вне форума Посмотреть профиль Отправить личное сообщение для Бармалей Посетить домашнюю страницу Бармалей Найти все сообщения от Бармалей
  № 10  
Ответить с цитированием
Бармалей
 
Аватар для Бармалей

Регистрация: Jun 2005
Адрес: Москва
Сообщений: 784
Отправить сообщение для Бармалей с помощью ICQ
Спасибо
__________________
Garbage Collector || AIR (Apollo) Docs

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:13.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.