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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ajax (отлов события изменения записи в бд) +, + оповещение по средствам окна на JS 
:(
    Опции темы
FCCStepan
Дата 23.1.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Затрудняюсь 2х словах уложить суть вопроса, по этому название темы не очень раскрывает суть проблемы. 

И так. имеем. 
1) Клиент открывает сайт, авторизируется, задает вопрос  и сворачивает окно браузера
2) никаких событий обновления страницы не происходит.
3) Клиент получает ответ на свой вопрос (по сути это изменение записи в бд)
4) На компьютере клиента появляется окошко, извещающее клиента о поступлении ответа. 

На сколько я понимаю, с использованием аякса, можно без обновления содержимого страницы (нажатий f5 или передвижений по сайту) отловить событие (в данном случае - событие появления ответа). Далее если запрос аякса вернул 1цу -нужно отобразить красивое окошко - типа тех, которые выводят downloader'ы (при звершении всех загрузок). Для этого мы берем JS и развлекаемся с ней. 

В принципе это одна из схем.

Вторая схема - это тулбар, который ловит все эти события.

Еще идеи, варианты, пожелания, предложения есть?

Заранее спасибо.

PM MAIL   Вверх
Sardar
Дата 23.1.2008, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Ajax это polling метод, т.е. скрипт опрашивает сервер через промежутки времени. Если окно закрыли, то и скрипт убьётся.
Тулбар штука не простая, его как плагин нужно ставить, что само по себе не удобно (именно для твоей задачи). К тому же тулбар имеет гораздо больше прав, к примеру может читать содержимое других страниц.

Вывод: читаем любую из сотен тысячь статей о ajax'е, понимаем принцип работы. 


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
FCCStepan
Дата 24.1.2008, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Sardar,  неудобность тулбара - согласен. Про закрытие окна - естественно тоже в курсе. про polling можно по подробнее ? хотябы целиком название, что бы было от чего отталкиваться.


Есть какие ни будь принципиально другие подходы?
PM MAIL   Вверх
Sardar
Дата 24.1.2008, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



polling - опрашиваем сервис через некоторые промежутки времени, в противоположность к events - получаем уведомления о смене состояния.
События от сервера не получить (без постоянных коннектов), все ajax (и не только) приложения опрашивают сервер сами.

Цитата(FCCStepan @  24.1.2008,  09:48 Найти цитируемый пост)
Есть какие ни будь принципиально другие подходы? 

Довольно тяжёлый способ это держать коннект открытым (в iframe к примеру). Сервис каждую секунду отправляет пробелы или lag-event'ы, что бы браузер не закрыл соединение. Как только возникает событие - отправляется вызов метода на стороне JS. Да, это гораздо более реактивно, чем самому опрашивать (пока сеть не лагает), но хавает ресурсы на сервере (продолжительный коннект штука не приятная).

Главное, что тебе это не нужно smile   На сервере сделай очередь событий, с клиента её опрашивай (отдавая к примеру timestamp последнего обновления), сервер отдаёт свежие события. Ну узнает юзер о озменениях через 5сек, а не сразу, это не страшно smile
Если изменения вызваны тобой, то естественно ты сразу можешь их отобразить, не дожидаясь подтверждения с сервера. Как только ответ придёт, обновишь страницу в реальное состояние, уведомив пользователя если что-то пошло не по сценарию.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
FCCStepan
Дата 28.1.2008, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, это все понятно. 
Как на аяксе послать запрос серверу с учетом бездействия пользователя?  Тоесть как завести таймер, который будет выполнять запрос? дальше со всем остальным я уже разберусь сам, там понятно. 

PM MAIL   Вверх
Sardar
Дата 29.1.2008, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



setInterval(func, milliseconds) или setTimeout(func, milliseconds), где func это вызываемая функция (можно анонимную function() {..), а milliseconds соответственно тысячные секунды. Вбей в поиск, масса примеров.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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