Мой проект в основном похож на канал Reddit, который обновляется в режиме реального времени.Я пытаюсь использовать AJAX для периодического опроса сервера на наличие обновлений по 15 элементам одновременно.
Я написал цикл for, но он вызвал блокировку браузера (полагаю, слишком много XHR?).
Как я могу опрашивать каждый элемент в канале Reddit-esque, не блокируя браузер?Какой самый эффективный способ сделать это?
Должен ли я использовать длинный опрос, если одновременно более 100 клиентов используют веб-приложение?Или я должен выбрать смарт-опрос (увеличение времени ожидания между запросами, если нет данных)?
Спасибо!Я все еще новичок в AJAX!
for (var i=0; i < id_array_len; i++) {
// Grab current reply count
var reply = $("#repl"+item_id).html();
var url= *php function here*
var ajaxRequest;
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser does not support AJAX!");
return false;
}
}
}
ajaxRequest.onreadystatechange = function(){
if (ajaxRequest.readystate == 4){
live_feed_data_tot = ajaxRequest.responseText;
if (live_feed_data_tot.trim() == "no change" || live_feed_data_tot.trim() == "no meme" || live_feed_data_tot.trim() == "no response"){
console.log("(no update)");
} else {
var live_feed_data = live_feed_data_tot.split(',');
if (live_feed_data[1] == 'reply') {
// Reply count has changed
new_reply = live_feed_data[0].trim();
// Update actual number
$("#repl"+item_id).html(new_reply);
}
}
}
}
ajaxRequest.open('POST', url, true);
ajaxRequest.send();