Коллеги, просветите 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 туда.
Но тоже как то не кайфово.. при отсутствии куки, приложение обдудится! )))
Наставьте на путь истинный) Спасибо.