33 votes

Notification du client, dois-je utiliser un push ou un sondage AJAX?

Je suis en train de travailler sur une simple notification service qui sera utilisé pour transmettre des messages aux utilisateurs de surfer d'un site web. Les notifications n'ont pas à être transmises en temps réel, mais il peut être une meilleure expérience utilisateur s'ils se produisent plus fréquemment que dire toutes les 5 minutes. Les données envoyées vers et depuis le client n'est pas très grande et il est un simple requête de base de données pour récupérer les données.

En lisant d'autres conversations sur le sujet, il semblerait que l'AJAX push peut entraîner une hausse de la charge du serveur. Depuis je ne peut tolérer plus longtemps serveur retards est-il intéressant d'avoir le serveur de notifications push ou tout simplement de sondage.

Il n'est pas beaucoup plus difficile à mettre en œuvre le scénario poussé et j'ai donc pensé que je voudrais voir ce que l'opinion était ici.

Merci pour votre aide.

EDIT: J'ai regardé dans un simple AJAX Push et mis en œuvre une simple démo basée sur cet article par Mike Purvis. La charge du client est assez faible, autour de 5k pour la première version et devrait le rester pour un certain temps.


Merci à tous pour vos réponses. J'ai décidé d'aller avec la solution de vote, mais pour l'envelopper le tout dans une bibliothèque utilitaire de sorte que si ils veulent le changer plus tard, c'est plus facile.

13voto

Oddman Points 567

Je suis surpris que personne ici n'a mentionné le long du scrutin. Le temps d'interrogation signifie garder une connexion ouverte pour une période plus longue (disons 30 à 60 secondes), et une fois qu'il est fermé, réouverture à nouveau, et tout simplement d'avoir la socket de connexion/d'écouter les réponses. Il en résulte moins de connexions (mais plus chers), et les moyens que les réponses sont presque immédiats (certains peuvent avoir à attendre une nouvelle interrogation de connexion). Je tiens à ajouter que, en combinaison avec des technologies comme NodeJS, ce qui en résulte est très efficace, des ressources et à la lumière de la solution, qui est de 100% navigateur compatible avec tous les principaux navigateurs et versions, et ne nécessite aucune technologie comme une Comète ou Flash.

Je réalise que c'est une vieille question, mais pensé qu'il pourrait toujours être utile afin de fournir cette information :)

10voto

Supertux Points 2070

Certainement utiliser le pousser dans ses beaucoup plus fraîches. Si vous voulez juste de simples notifications je voudrais utiliser quelque chose comme StreamHub Push Serveur pour faire le gros du travail pour vous. Le développement de votre propre Ajax Push fonctionnalité est extrêmement délicate et rocky road - vous ont pour le faire fonctionner dans tous les navigateurs et de gérer les pare-feu et proxy tuer les connexions persistantes etc... Pourquoi ré-inventer la roue. Aussi, il a une de même à faible empreinte de moins de 10K donc elle devrait convenir si c'est une priorité pour vous.

7voto

Daniel Silveira Points 8553

Les deux ont différentes exigences et adresse de différents scénarios.

Si vous avez besoin de mises à jour en temps réel, comme dans un chat en ligne, push est un must.

Mais, si la période de rafraîchissement est grand, comme il est dans votre cas (5 minutes), puis de piscine est la solution appropriée. Pousser, dans ce cas, il faudra beaucoup de ressources provenant à la fois le client et le serveur.

Astuce! essayez de faire de la page qui vérifie la piscine rapide et propre, donc il ne consomme pas beaucoup de ressources sur le serveur à chaque requête. Ce que j'ai l'habitude de le faire est de garder un drapeau en mémoire (comme dans une variable de session) qui dit que si la piscine est vide ou pas... donc, je ne havy regarder dans la piscine que si elle n'est pas vide. Lorsque la piscine est vide, ce qui est la plupart du temps, la demande de page fonctionne extrêmement rapide.

5voto

mmacaulay Points 2048

Parce que l'utilisation d'un push nécessite de maintenir une connexion HTTP ouverte entre votre serveur et chaque client, je choisirais également un sondage. Non seulement cela va consommer beaucoup de ressources du serveur, mais ce sera aussi beaucoup plus difficile à utiliser. mettre en œuvre comme mat b mentionné.

D'après mon expérience en interrogation, si l'intervalle d'interrogation est assez fréquent sur un site suffisamment occupé, les journaux de votre serveur Web peuvent être inondés de demandes d'interrogation très rapidement.

3voto

matt b Points 73770

Je mettrais en œuvre un sondage simplement parce que cela semble plus simple à écrire, et le garder simple est très précieux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X