Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.08.2011, 19:06
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 354

Логика звукового уведомления о поступлении новых сообщений
Коллеги, просветите PLZ, чтобы я не изобретал велосипед и по десять раз не переписывал код.

Весь смысл сводится к проигрыванию звукового сообщения о поступлении пользователю новых сообщений.

На странице с перепиской смастерил такую логигу (упросил для ясности):
$("#head_mes_stat").everyTime(3000,function(i) {

    var countMesFlag=0;   // флаг счетчика сообщений (зуковое уведомление только при увеличении числа сообщений)

    $.ajaxSetup({cache: false});
    ajaxData = someData + (new Date().getTime()) + Math.random();
    $.ajax({
         url : 'update_mes_stat.php',
         type : 'GET',
         data: ajaxData,
         success: function(data) {
              if (data) {
                  var total_mes_num = data;         // количество непрочитанных сообщений
                  if (total_mes_num > 0) {
                      if(total_mes_num > countMesFlag) soundManager.play('mySound'); // дудим
                      countMesFlag = total_mes_num; // и не даем постоянно дудеть (только при увеличении числа сообщений)
                  } else {
                      countMesFlag = 0;             // обнуляем маркер
                  }
              }
         }
    });

});


Всё работает гуд, но вот беда - на сайте много страниц с перезагрузкой и если повесить такой код на все страницы,
то при переходе на другую сгенерированную сервером http-страницу, звуковое уведомление проигрывается снова!
Встает вопрос - как правильно этого избежать?

Навскидку в голову приходят такие варианты:

1) Завести в базе для каждого сообщения поле типа 'продудело_или_нет' enum('0', '1')
и при каждом ajax-запросе смотреть, есть ли не продудевшие сообщения, апдейтить на '1' и посылать клиенту флаг дудеть или нет.
Мне такой вариант что-то не очень по нутру. Не хотелось бы проводить апдейты в базе с частотой в 3000 милисекунд,
да и целое поле в БД под это дело выделять не кажется мне целесообразным!

2) Попробовать реализовать через запись в куку, записывая countMesFlag туда.
Но тоже как то не кайфово.. при отсутствии куки, приложение обдудится! )))

Наставьте на путь истинный) Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 11.08.2011, 02:13
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Триви
при отсутствии куки, приложение обдудится! )))
в первую очередь при отсутствии куки чел не сможет авторизоваться что бы посылать сообщения.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск