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

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.11.2007, 18:09
IDVsbruck вне форума Посмотреть профиль Отправить личное сообщение для IDVsbruck Найти все сообщения от IDVsbruck
  № 1  
Ответить с цитированием
IDVsbruck
[+4 27.04.08]

Регистрация: Oct 2006
Сообщений: 22
По умолчанию Рекурсия при запросах к серверу

Нашел замечательный механизм - задержка ответа сервера при ajax-запросе (так называемый Continuation из Jetty, технология Comet) - когда ответ с сервера приходит при получении ожидаемого события (например, обновление информации только когда на страницу входит новый посетитель). Так как запрос асинхронный, флешка работает в нормальном режиме.

Вызов осуществляю вызовом функции:
Код:
function getStatus() {
	var sendData = new LoadVars();
	var loadData = new LoadVars();
	loadData.onLoad = function(success: Boolean) {
		if (success) {
			if (loadData.param1 != undefined) lblParam1.text = loadData.param1;
			if (loadData.param2 != undefined) lblparam2.text = loadData.param2;
			getStatus();
		}
	}
	sendData.userID = userID;
	sendData.sessionID = sessionID;
	sendData.recieveParameter = "get_status";
	sendData.sendAndLoad("{path to my script}", loadData);
}
Можно ли таким образом делать постоянный опрос сервера? Допустима ли рекурсия в таком исполнении? (Просто я что-то такое слышал об ограничении флешем уровней рекурсии - может, это и бред, но когда приложение не работает и не можешь найти решения, то прислушиваешься уже ко всему).

Ну и еще такой вопрос: наверняка кто-то реализовывал на флеше реакцию на действия сервера не сокетом (к сожалению, мне он тут не подходит), а постоянным опросом сервера через, например, равные промежутки времени на предмет наличия изменений. В чистом html (или jsp) это сделать проще - ответом сервера служит скрипт с функцией повторного запроса - и следующий вызов происходит не из функции (она завершила свою работу - получила контент), а путем запуска скрипта из вновь полученного контента. А вот как это же реализовывают во флеше? - Если простой рекурсией, то нет ли переполнения стека? Не съедается ли память?

Большая благодарность за помощь или совет.

Старый 04.11.2007, 18:23
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Не мучайте сервер.

17777


Последний раз редактировалось etc; 04.11.2007 в 19:13.
Старый 04.11.2007, 18:36
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 3  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Чтобы не бояться рекурсии, можно использовать setTimeout, но если юзеров будет много, серверу будет плохо....
__________________
4am is time to rock

Старый 04.11.2007, 23:44
IDVsbruck вне форума Посмотреть профиль Отправить личное сообщение для IDVsbruck Найти все сообщения от IDVsbruck
  № 4  
Ответить с цитированием
IDVsbruck
[+4 27.04.08]

Регистрация: Oct 2006
Сообщений: 22
Ну, если честно, то серверу по барабану ...
Согласно документации Jetty сервер может принять на себя одновременно 10700 конкурирующих запросов, при этом обрабатывая 5000 запросов в секунду. Стек памяти занимает при полной загрузке 57М. Если учесть, что под проект выделен отдельный сервер (без конкурирующих проектов), а даже очень загружающий мультигейминг ну никак не будет дотягивать до такого количества.

Кстати, сокеты будут тянуть больше ресурсов сервера. То есть в теории к серверу может подключиться бесконечное количество клиентов, но все знают, что такое ДДОС-атака (кажется, так), когда при большой загрузке порта, выделенного под сокет, ложится сервак.

А вот насчет setTimeout спасибо - как-то забыл про него.

Старый 05.11.2007, 02:28
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 5  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
Я вообще не понял где в вашем коде рекурсия (касательно флэша) так как там нету рекурсии то беспокоиться о 256 уровнях рекурсии не обязательно, насчет push'a.

Есть сервер lightstreamer (http://www.lightstreamer.com/) у них есть хорошая библиотека для клиента на аs2/as3 (жалко что они идут только с платными версиями).

В ас3 можно без труда реализовать comet через flash.net.URLStream (так например в лайтстриммер и реализованно), с ас2 трудней, но тоже реализуемо.

Старый 06.11.2007, 12:14
FourSide вне форума Посмотреть профиль Отправить личное сообщение для FourSide Найти все сообщения от FourSide
  № 6  
Ответить с цитированием
FourSide

Регистрация: Jul 2006
Сообщений: 387
Отправить сообщение для FourSide с помощью Skype™
Мне кажется, приведённый код работать вообще не будет.
Метод getStatus не описан в объекте loadData.

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

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

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


 


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


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