2010-05-06 6 views
0

Pour quelque raison que ce soit, cette vérification des nouveaux messages de chat provoque une plus grande quantité de chargement du navigateur (et dans une certaine mesure du serveur) que ce à quoi je m'attendais. Quelqu'un voit-il des moyens que je peux rendre plus efficace, pour réduire la charge?Comment rendre mon script d'interrogation de chat javascript plus efficace?

// 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

var secs = 1; : o) – jAndy

+0

Droite. : p Je suppose que je devrais préciser que cela fait partie du problème. J'aimerais donner un temps de vérification plus rapide pour mettre à jour les chats plus fréquemment, mais cela semble rendre le navigateur un peu trop difficile. (et je suppose que cela a des répercussions sur la charge du serveur, bien que je n'ai pas pu mesurer cela en soi) – Kzqai

Répondre

1

Découvrez CometD. C'est un système à interrogation longue que j'ai utilisé avec un certain succès pour les systèmes de chat simples intégrés à jQuery. (La dernière fois que j'ai regardé, il y avait quelques implémations spécifiques à jQuery, mais je n'en ai jamais trouvé une qui soit assez robuste pour moi.)

+0

Vous n'auriez pas de code public qui utilise CometD, voulez-vous ... – Kzqai

1

vous pouvez this push engine la caisse de sorte que vous n'avez pas au sondage de nouvelles données plus. vérifiez, c'est vraiment cool.

+0

Ou généralement la technique connue sous le nom de COMET: http://en.wikipedia.org/wiki/Comet_%28programming% 29 – RoToRa

Questions connexes