2009-08-17 5 views
3

J'ai une situation où un affichage sur une page Web doit être mis à jour au hasard. Je suis désireux de le faire en AJAX, mais ne suis pas sûr comment faire autre que de faire unAJAX recherche en permanence la mise à jour du serveur? Javascript

while(true) { ajaxFunction(); sleep(1) } 

chose Type.

Le problème avec ceci est que la page Web doit être mise à jour très rapidement sur un changement au serveur, mais les changements pourraient se produire très sporadiquement parfois jamais.

EDIT: Il s'agit d'une application Iphone utilisant un UIWebView, est-il possible d'utiliser la notification push de l'iPhone pour interfacer avec le javascript?

Merci!

Répondre

0

Si les modifications sont sporadiques, n'utilisez aucun AJAX. Attendez que l'utilisateur actualise ou revisite la page.

+1

Comme je l'ai dit l'utilisateur a besoin d'être mis à jour sur le changement à l'affichage instantanément – DevDevDev

+0

"mais les changements pourraient arriver très sporadiquement parfois jamais" – mcandre

+0

Encore le client a besoin de savoir ASAP "page doit être mis à jour très rapidement sur un passer au serveur " – DevDevDev

1

La seule façon que je peux penser est d'interroger constamment. Gardez vos réponses à un faible niveau afin de ne pas déplacer un tas de données sans raison. Vous pouvez même suspendre la réponse du serveur jusqu'à ce que les données soient disponibles.

setInterval(function(){ 
    $.get("updates.php", function(result) { 
    alert(result); 
    }); 
}, 5000); 

pourrait même construire une certaine logique dans updates.php pour annuler la setInterval() après 10 minutes d'inactivité de la part des utilisateurs. Cela va tuer les requêtes constantes des utilisateurs qui ne sont plus connectés.

1

Vous devriez envisager d'implémenter une sorte de technologie de comète (serveur poussé), lorsque vous voulez optimiser la charge des serveurs. Si vous n'avez que quelques utilisateurs, une solution d'interrogation est appropriée. A propos de comet: les technologies de comète ne sont rien d'autre, mais font une simple requête http au serveur, où le serveur ne répond pas immédiatement à la requête, mais attend qu'il y ait quelque chose à répondre. Jusqu'à ce que le thread sur le serveur est suspendu.

Vous devez tenir compte de certains aspects techniques lors de l'implémentation d'une technologie de serveur push (par exemple, où dois-je suspendre le thread)? Il est préférable d'utiliser une source ouverte. Il est facile de les trouver sur le Web si vous recherchez une comète.

+0

C'est la solution que j'aurais donnée, mais je n'aurais pas pensé à utiliser une bibliothèque externe pour compléter plus complètement la solution. –

Questions connexes