2008-12-24 6 views
4

Quel est le modèle suggéré pour fournir des mises à jour de l'interface utilisateur en temps réel dans une application Web? Par exemple, tout en répondant à une question sur SO et un autre utilisateur soumet une réponse et une invite apparaît. En outre, si chaque page de votre site fournit cette fonction, comment évitez-vous de surcharger le serveur avec trop d'appels AJAX?Meilleure façon de mettre en œuvre des mises à jour de l'interface utilisateur en temps réel comme le notificateur «nouvelle réponse» de SO?

Répondre

2

Je pense que l'utilisation de la comète pour ce sera une approche. (Comet Info here et here)

Avec Comet vous pouvez pousser la réponse ou tout autre information que vous avez sur le serveur lorsque vous avez l'info, si vous avez gagné » t demander l'information du client toutes les X fois.

Mais comme inconvénient, tvanfosson et Josh me le font remarquer, il va garder la connexion HTTP bloquée dans un état de lecture client pendant des périodes prolongées.

+0

En fait, je pense que ce n'est pas particulièrement une bonne idée. Je ne vois pas comment cela évoluera très bien car cela dépend de garder une connexion ouverte pendant de longues périodes de temps. Lorsque le nombre de connexions augmente, cela met l'accent sur votre serveur Web lorsque les ressources réseau sont utilisées mais pas libérées. – tvanfosson

+0

C'est très bien si vous seulement une poignée d'utilisateurs. Une boîte de quadruple proc ne pouvait supporter que 400 utilisateurs concurents ... une idée géniale juste pas de pratique pour une grande échelle – JoshBerke

+0

Oui, je pense que ça ne montera pas beaucoup. Nous avons utilisé cette approche, mais nous n'avions pas une quantité massive d'utilisateurs comme SO. –

4

Il suffit de lancer une minuterie et d'interroger le serveur via XmlHttpRequest. Ce n'est pas comme si vous aviez besoin de mises à jour instantanées; AFAIK, SO interroge sur un intervalle de 30 secondes, mais c'est trop lent pour moi, donc j'ai truqué un script Greasemonkey pour vérifier toutes les 15 secondes.

Questions connexes