![]() |
Рекурсия при запросах к серверу
Нашел замечательный механизм - задержка ответа сервера при ajax-запросе (так называемый Continuation из Jetty, технология Comet) - когда ответ с сервера приходит при получении ожидаемого события (например, обновление информации только когда на страницу входит новый посетитель). Так как запрос асинхронный, флешка работает в нормальном режиме.
Вызов осуществляю вызовом функции: Код:
function getStatus() {Ну и еще такой вопрос: наверняка кто-то реализовывал на флеше реакцию на действия сервера не сокетом (к сожалению, мне он тут не подходит), а постоянным опросом сервера через, например, равные промежутки времени на предмет наличия изменений. В чистом html (или jsp) это сделать проще - ответом сервера служит скрипт с функцией повторного запроса - и следующий вызов происходит не из функции (она завершила свою работу - получила контент), а путем запуска скрипта из вновь полученного контента. А вот как это же реализовывают во флеше? - Если простой рекурсией, то нет ли переполнения стека? Не съедается ли память? Большая благодарность за помощь или совет. |
Не мучайте сервер.
17777 |
Чтобы не бояться рекурсии, можно использовать setTimeout, но если юзеров будет много, серверу будет плохо....
|
Ну, если честно, то серверу по барабану ...
Согласно документации Jetty сервер может принять на себя одновременно 10700 конкурирующих запросов, при этом обрабатывая 5000 запросов в секунду. Стек памяти занимает при полной загрузке 57М. Если учесть, что под проект выделен отдельный сервер (без конкурирующих проектов), а даже очень загружающий мультигейминг ну никак не будет дотягивать до такого количества. Кстати, сокеты будут тянуть больше ресурсов сервера. То есть в теории к серверу может подключиться бесконечное количество клиентов, но все знают, что такое ДДОС-атака (кажется, так), когда при большой загрузке порта, выделенного под сокет, ложится сервак. А вот насчет setTimeout спасибо - как-то забыл про него. |
Я вообще не понял где в вашем коде рекурсия (касательно флэша) так как там нету рекурсии то беспокоиться о 256 уровнях рекурсии не обязательно, насчет push'a.
Есть сервер lightstreamer (http://www.lightstreamer.com/) у них есть хорошая библиотека для клиента на аs2/as3 (жалко что они идут только с платными версиями). В ас3 можно без труда реализовать comet через flash.net.URLStream (так например в лайтстриммер и реализованно), с ас2 трудней, но тоже реализуемо. |
Мне кажется, приведённый код работать вообще не будет.
Метод getStatus не описан в объекте loadData. |
| Часовой пояс GMT +4, время: 18:27. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.