![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Rasmus |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.12.2009 Репутация: нет Всего: нет |
Я просмотрел уже все возможные сайты: нигде толком не пишут разбор примера написания скрипта с постоянным соединением Ajax. Есть библиотеки DoJo, но на сайте http://cometd.org/ тожа ни примеров скриптов, ни образцов что за чем должно идти (не в пример DoJo Ajax - об этом вполне хорошо расписано).
Суть в следующем: есть локальный сервер денвер. необходимо через Ajax прочесть форму и отправить на сервер, где по данным формы будет пропарсен удаленный документ с определенным именем, затем возвращен ответ Положительный или отрицательный. Если ответ полож. => форма отправляется вновь на сервер, но уже с одифицированным именем документа, и так далее много раз. И по Ответам сервера на странице графический прогресс бар отмеряет собственно прогресс... Однако такая схема стала ЖРАТЬ память. И решил сделать Цикл обработки на сервере а с каждой итерацией цикла передавать клиенту данные для прогресс бара. Обработка может занять минут 20 даже, по этому для выполнения скрипта настройки сервера изменил. Осталось организовать постоянное соединение... Пожалуйста проиллюстрируйте на примере DoJo организацию Comet... или на худой конец jQuery. Только каждую строчку прокомментируйте - благо там методов не так много Это сообщение отредактировал(а) Rasmus - 11.12.2009, 15:48 |
|||
|
||||
| IDVsbruck |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 4 Всего: 22 |
Давно занимаюсь этим вопросом. Сервер-пуш на чистом javascript - по-моему, извращение. Конечно, работает, но вот состояние постоянной загрузки страницы достает. Да еще и несовершенство процесса.
Более старый вариант реализации был с так называемым механизмом Continuations (входит в пакет сервера Jetty) - посылаем обычный запрос, но ответ возвращается когда нужно будет серверу ... и тут же снова посылаем запрос для следующего ожидания ответа от сервера - получается эффект сервер-пуша. В понимании достаточно просто, с реализацией могут быть вопросы. Более поздний вариант и работающий в настоящее время точно в 2-ух проектах - с использованием флеша. Дефакто установлен везде, куда добирается инет и, в принципе, совершенно кроссбраузерен. Сокет устанавливает соединение с сервером и общается с ним, а через механизм ExternalInterface (AS3 начиная с CS3) мы можем наладить двухстороннюю связь флеш-страница. Преимущество - относительное сокрытие процесса, наибольшая стойкость взаимодействия, возможность шифровать траффик, использование предназначенных для этого компонентов. А если учесть, что флеш может работать не только по TCP/IP, то выглядит он однозначно лучше. И, кстати, еще достоинство - полная секъюрность установки связи (только указанному домену), что ограничивает от посягательств на код. При установке коннекта передав id сессии, получаем доступ на сервере к тукущей сессии - это развязывает руки по поводу общего пространства использования и идентефикации клиента. Если заинтересуют механизмы - пиши тут, подскажу. |
|||
|
||||
| Rasmus |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.12.2009 Репутация: нет Всего: нет |
IDVsbruck, я не хочу использовать флеш... совершенно случайно нашол один источник с разными реализациями по данной теме:
1. Через Multipart XMLHTTPRequest : http://javascript.com.ua/ajax/server-push/...-xmlhttprequest Способ работает корректно только на браузере Firefox. Довольно таки удобный. 2. Через XMLHTTPRequest, состояние interactive : http://javascript.com.ua/ajax/server-push/...est-interactive Хорошо работает на фаерфоксе а на опере 9.6+ не очень. 3. Через Бесконечный IFrame : http://javascript.com.ua/ajax/server-push/iframe Простой способ..может кому и подойдет... 4. Через Event-source : http://javascript.com.ua/ajax/server-push/event-source-opera Работает пока только на Opera 9+. очень удобная штука!!! Вот на ней я и остановлюсь. 4 и 5: long poll и polling : http://javascript.com.ua/ajax/server-push/long-poll и http://javascript.com.ua/ajax/server-push/polling Я остановился на Event-source. Хотелось бы о нем подробнее узнать, в особенности как отправлять POST данные прослушиваемому скрипту на сервер.... Event-source - будущее всемирной паутины, стандарт HTML5. Рассмотрев его описалово понял что некий Event-source существует и сейчас при загрузке тех же картинок в теге <img src="">. SRC браузер понимает как обращение к некому адресу и получение ответа а затем обработка. Event-source же это более раскрытый механизм для програмирования. <Event-source src="script.php"> браузер точно так же обращается по адресу и вот тут фишка - скрипт может давать команды порциями, разделенными определенными символами. Эти порции усваиваются пользовательской функцией, которая может на основании переданных данных например указыват прогресс бар работы скрипта в реальном времени. Жаль, что пока эту удивительную вещь поддерживает только Opera. Это сообщение отредактировал(а) Rasmus - 12.12.2009, 11:57 |
|||
|
||||
| mxt |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 6.9.2007 Репутация: нет Всего: 1 |
--------------------
|
|||
|
||||
| IDVsbruck |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 4 Всего: 22 |
Ну, с учетом доли Оперы в 0.84% этот способ - ничто.
Ссылки (точнее, ссылка на один ресурс) - достаточно старая и базовая для таких вещей. Года 2 назад делал по стопам советов на нем - ерунда получается - кастыль на костыле, реально работать server-push не стал. АРЕ вроде неплохо смотрится. И поработали ребята неплохо - под любой фреймворк и плагины работает, да еще и такая дока. И код клиентский очень располагает. Все думаю, где же подвох? - Скачал пакет, а оказывается, серверная часть только под Red Hat (rpm-пакеты) ... кроме х86_64 ничего не интересовало, может, под Линух другой подход. Это-то и все объясняет |
|||
|
||||
| Rasmus |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 11.12.2009 Репутация: нет Всего: нет |
я все же сделал Event-source....все работает отлично. Только вот подпортило общую картину то, что при создании элемента Event-source и прослушивании скрипта на сервере страница блокируется и не отвечает ни на какие нажатия мышкой. А у меня на странице кнопка Стоп есть.. выходит на нее нажать неудастся. Можно ли как то запустить функцию остановки например через нажатие клавишы клавы, или это так же заблокировано? Нужна кнопочка стоп..
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Применение библиотек | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |