Как сделать скрипт опроса чата JavaScript более эффективным? - PullRequest
0 голосов
/ 06 мая 2010

По какой-то причине эта проверка новых сообщений чата вызывает большую загрузку браузера (и в некоторой степени сервера), чем я ожидал. Кто-нибудь видит какие-либо способы, которыми я могу сделать это более эффективным, чтобы уменьшить нагрузку?

// Begin the cycle of refreshing the mini chat after the standard delay.
function startRefreshingMinichat(){
    var secs = 30; // Chat checking frequency.
    setTimeout(function (){
        checkForNewChats();
        startRefreshingMinichat(); // Loop the check for refresh.
    }, secs*1000);
}

// Check for the latest chat and update if it's different.
function checkForNewChats(){
    // Check whether the latest chat doesn't match the latest displayed chat.
    // NOTE THAT THIS CALLBACK DOES NOT TRIGGER IMMEDIATELY.
    $.getJSON('api.php?type=latest_chat_id&jsoncallback=?', function(data){
        var newChats = false;
        // Update global data stores if an update is needed.
        if(updateDataStore(data.latest_chat_id, 'chat_id', 'latestChatId', 'chat_id')){
            newChats = true;
        }
        if(newChats){ // there are new chats to show.
            refreshMinichat(null, 50); // loads new chat content.
        }
        // Since this callback isn't immediate, any feedback has to occur whenever the callback finishes.
 }); // End of getJSON function call.
}

Ответы [ 2 ]

1 голос
/ 06 мая 2010

Выезд CometD .Это система длинных опросов js, которую я с некоторым успехом использовал для простых систем чатов, интегрированных с jQuery.(В прошлый раз, когда я смотрел, было несколько специфических реализаций jQuery, но я так и не нашел достаточно надежную для меня.)

1 голос
/ 06 мая 2010

вы можете оформить заказ этот push-механизм , чтобы вам больше не приходилось запрашивать новые данные. проверить это, это действительно круто.

...