~AquaZ~
Новичок
Привет. Есть чат http://aquadc.net/ (извините за рекламу, просто тут можно потестить). Чтобы не сжигать кучу траффика, я подгружаю только последние сообщения, формат - JSON. JS-код, который отвечает за подгрузку (использую jQuery):
Иногда возникают странные глюки. Порой сообщения не показываются, хотя я догадываюсь о природе этого, а иногда - дублируются по куче раз. В чём дело?
Код:
function UpdChat()
{
// ( здесь был код, ответственный за частоту обновления чата )
$.getJSON('/misc/msgs.php', {"fromtime":fromtime}, function(data){ // fromtime - время, начиная с которого нужны сообщения
fromtime = data.time; // обновляем это значение из полученых данных
if ($('#chat').is(':not(:empty)') && wFocus == 0)
newmsgs += data.msgs.length; //отвечает за мигание строки адреса при появлении новых сообщений. Если окно чата пустое (грузит впервые), то не мигаем
$.each(data.msgs, function(key,val){ // перебор массива с сообщениями
if (val[0] == 0) // то что дальше не должно влиять на работу...
val[0] = 'reg'; // если надо - могу объяснить, что это всё такое...
if (val[0] == 1)
val[0] = 'vip';
if (val[0] == 2)
val[0] = 'moder';
if (val[0] == 3)
val[0] = 'admin';
$('#chat').append('<div class='+val[0]+'><a href="#" onClick="user('+val[3]+'); return false;">'+val[1]+'</a>: <span>'+val[2]+'</span><div>' + val[4] + '</div></div>');
});
});
if ($.cookie("autoscroll") == 1) // автоскролл
{
$('#chat').animate({scrollTop:9999999}, 500);
}
setTimeout(UpdChat, ChtRfr); // обновление чата с заданной частотой
}