![]() |
|
||||||||||
|
|||||
|
[+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) это сделать проще - ответом сервера служит скрипт с функцией повторного запроса - и следующий вызов происходит не из функции (она завершила свою работу - получила контент), а путем запуска скрипта из вновь полученного контента. А вот как это же реализовывают во флеше? - Если простой рекурсией, то нет ли переполнения стека? Не съедается ли память? Большая благодарность за помощь или совет. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Не мучайте сервер.
17777 Последний раз редактировалось etc; 04.11.2007 в 19:13. |
|
|||||
|
ветеран форума
|
Чтобы не бояться рекурсии, можно использовать setTimeout, но если юзеров будет много, серверу будет плохо....
__________________
4am is time to rock |
|
|||||
|
[+4 27.04.08]
Регистрация: Oct 2006
Сообщений: 22
|
Ну, если честно, то серверу по барабану ...
Согласно документации Jetty сервер может принять на себя одновременно 10700 конкурирующих запросов, при этом обрабатывая 5000 запросов в секунду. Стек памяти занимает при полной загрузке 57М. Если учесть, что под проект выделен отдельный сервер (без конкурирующих проектов), а даже очень загружающий мультигейминг ну никак не будет дотягивать до такого количества. Кстати, сокеты будут тянуть больше ресурсов сервера. То есть в теории к серверу может подключиться бесконечное количество клиентов, но все знают, что такое ДДОС-атака (кажется, так), когда при большой загрузке порта, выделенного под сокет, ложится сервак. А вот насчет setTimeout спасибо - как-то забыл про него. |
|
|||||
|
Flash Aксакал
Регистрация: Jun 2005
Сообщений: 636
|
Я вообще не понял где в вашем коде рекурсия (касательно флэша) так как там нету рекурсии то беспокоиться о 256 уровнях рекурсии не обязательно, насчет push'a.
Есть сервер lightstreamer (http://www.lightstreamer.com/) у них есть хорошая библиотека для клиента на аs2/as3 (жалко что они идут только с платными версиями). В ас3 можно без труда реализовать comet через flash.net.URLStream (так например в лайтстриммер и реализованно), с ас2 трудней, но тоже реализуемо. |
|
|||||
|
Мне кажется, приведённый код работать вообще не будет.
Метод getStatus не описан в объекте loadData. |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:17. |
|
|
« Предыдущая тема | Следующая тема » |
|
|