Делаю чат на PHP и JS. Каждые 10 сек. проверяю новые сообщения:
function chatLive() {
var last = $('#chatLive .im:last').attr('id');
if (last > 0) // все сообщения начиная с last
{
$.ajax({
url: "/chat/ajax/live.php?last=" + last,
type: "GET",
success:function(data){
$( "#chatLive" ).append(data);
chatScroll();
initMyScripts();
}
});
}
else // чат загружен первый раз - получаем 50 последних сообщений.
{
$.ajax({
url: "/chat/ajax/live.php",
type: "GET",
success:function(data){
$("#chatLive").html(data);
chatScroll();
initMyScripts();
}
});
}
$('#chatForm #loading').fadeOut(300);
}
$(document).ready(function() {
chatLive();
setInterval(function() {
chatLive();
}, 10000);
});
В PHP скрипте делаю select так:
$rsData = array_reverse($entityDataClass::getList([
"select" => [
"ID",
"UF_DATE",
"UF_MESSAGE",
"UF_USER_NAME",
"UF_USER_CREATED",
"UF_USER_FOR",
"UF_USERPIC"
],
"filter" => [
"!UF_ACTIVE" => false,
">ID" => $last // id последнего сообщения
],
"order" => ["ID" => "DESC"],
"limit" => 50,
"cache"=> ["ttl" => 360000],
])->fetchAll());
На ПК все хорошо, а в мобильных браузерах при выходе из ожидания (например, 10 мин. не пользоваться телефоном), открывая браузер (вкладка не закрывалась) появляется дубликаты сообщений (по несколько раз). Предполагаю что это из-за функции setInterval, которая скорее всего накапливается в мобильном, когда браузер/телефон спит, а потом срабатывает несколько раз. Может ошибаюсь, в JS не силен.
Подскажите пожалуйста, как решить проблему с дубликатами сообщений?