Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> server-push / Comet с чем его едят? Напишите плиз как ими ползоваться... 
:(
    Опции темы
Rasmus
Дата 11.12.2009, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 11.12.2009

Репутация: нет
Всего: нет



Я просмотрел уже все возможные сайты: нигде толком не пишут разбор примера написания скрипта с постоянным соединением Ajax. Есть библиотеки DoJo, но на сайте http://cometd.org/ тожа ни примеров скриптов, ни образцов что за чем должно идти (не в пример DoJo Ajax - об этом вполне хорошо расписано). 

Суть в следующем: есть локальный сервер денвер. необходимо через Ajax прочесть форму и отправить на сервер, где по данным формы будет пропарсен удаленный документ с определенным именем, затем возвращен ответ Положительный или отрицательный. Если ответ полож. => форма отправляется вновь на сервер, но уже с одифицированным именем документа, и так далее много раз. И по Ответам сервера на странице графический прогресс бар отмеряет собственно прогресс... 

Однако такая схема стала ЖРАТЬ память. И решил сделать Цикл обработки на сервере а с каждой итерацией цикла передавать клиенту данные для прогресс бара. Обработка может занять минут 20 даже, по этому для выполнения скрипта настройки сервера изменил. Осталось организовать постоянное соединение...

Пожалуйста проиллюстрируйте на примере DoJo организацию Comet... или на худой конец jQuery. 
Только каждую строчку прокомментируйте - благо там методов не так много

Это сообщение отредактировал(а) Rasmus - 11.12.2009, 15:48
PM MAIL   Вверх
IDVsbruck
Дата 12.12.2009, 06:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 4
Всего: 22



Давно занимаюсь этим вопросом. Сервер-пуш на чистом javascript - по-моему, извращение. Конечно, работает, но вот состояние постоянной загрузки страницы достает. Да еще и несовершенство процесса.
Более старый вариант реализации был с так называемым механизмом Continuations (входит в пакет сервера Jetty) - посылаем обычный запрос, но ответ возвращается когда нужно будет серверу ... и тут же снова посылаем запрос для следующего ожидания ответа от сервера - получается эффект сервер-пуша. В понимании достаточно просто, с реализацией могут быть вопросы.
Более поздний вариант и работающий в настоящее время точно в 2-ух проектах - с использованием флеша. Дефакто установлен везде, куда добирается инет и, в принципе, совершенно кроссбраузерен. Сокет устанавливает соединение с сервером и общается с ним, а через механизм ExternalInterface (AS3 начиная с CS3) мы можем наладить двухстороннюю связь флеш-страница. Преимущество - относительное сокрытие процесса, наибольшая стойкость взаимодействия, возможность шифровать траффик, использование предназначенных для этого компонентов. А если учесть, что флеш может работать не только по TCP/IP, то выглядит он однозначно лучше. И, кстати, еще достоинство - полная секъюрность установки связи (только указанному домену), что ограничивает от посягательств на код. При установке коннекта передав id сессии, получаем доступ на сервере к тукущей сессии - это развязывает руки по поводу общего пространства использования и идентефикации клиента.

Если заинтересуют механизмы - пиши тут, подскажу.
PM MAIL   Вверх
Rasmus
Дата 12.12.2009, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
mxt
Дата 12.12.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.9.2007

Репутация: нет
Всего: 1



посмотри APE
http://www.ape-project.org/
--------------------
PM MAIL   Вверх
IDVsbruck
Дата 12.12.2009, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 4
Всего: 22



Ну, с учетом доли Оперы в 0.84% этот способ - ничто.
Ссылки (точнее, ссылка на один ресурс) - достаточно старая и базовая для таких вещей. Года 2 назад делал по стопам советов на нем - ерунда получается - кастыль на костыле, реально работать server-push не стал.

АРЕ вроде неплохо смотрится. И поработали ребята неплохо - под любой фреймворк и плагины работает, да еще и такая дока. И код клиентский очень располагает. Все думаю, где же подвох? - Скачал пакет, а оказывается, серверная часть только под Red Hat (rpm-пакеты) ... кроме х86_64 ничего не интересовало, может, под Линух другой подход. Это-то и все объясняет smile.
PM MAIL   Вверх
Rasmus
Дата 13.12.2009, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 11.12.2009

Репутация: нет
Всего: нет



я все же сделал Event-source....все работает отлично. Только вот подпортило общую картину то, что при создании элемента Event-source и прослушивании скрипта на сервере страница блокируется и не отвечает ни на какие нажатия мышкой. А у меня на странице кнопка Стоп есть.. выходит на нее нажать неудастся. Можно ли как то запустить функцию остановки например через нажатие клавишы клавы, или это так же заблокировано? Нужна кнопочка стоп.. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0446 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.