2010-04-15 19 views
3

Je crée un site Web où les utilisateurs pourront discuter et envoyer des fichiers les uns aux autres via un navigateur. J'utilise GWT pour l'interface utilisateur et hibernate avec gilead pour me connecter à un backend de base de données mysql.Quelle est la meilleure façon de mettre en œuvre un site Web où les utilisateurs peuvent interagir ensemble

Quelle serait la meilleure stratégie à utiliser afin que les utilisateurs puissent interagir ensemble?

+0

Faut-il utiliser une page Web (JSP/HTML) ou une application cliente (Applet, Webstart)? – BalusC

+0

désolé son un hppml weppage en utilisant gwt – molleman

Répondre

2

Je dirais que vous recherchez comet/AJAX | Server push/etc. Voir my previous answer à ce sujet pour quelques pointeurs. Fondamentalement, vous simulez inverser la communication entre le serveur et le client - il est le serveur qui est initier la connexion ici, car il veut, par exemple, informer l'utilisateur que son/son ami vient de passer en ligne, etc.

Le les implémentations de cette technique changent assez rapidement, donc je ne ferai pas de recommandations définitives - choisissez celui qui répond le mieux à vos besoins :)

2

COMET est la technologie qui permet de discuter sur une page web - Elle communique par le biais de garder connexions -Alive. Cela permet aux serveurs de transmettre des informations au client. Il existe plusieurs implémentations de ce côté client avec GWT. La plupart des serveurs le supportent, il fait aussi partie de la spécification Servlet 3.0 (que personne n'a encore implémenté)

+0

@Romain: Servlet 3.0 est déjà mis en œuvre par exemple. par Glassfish version v3. –

1

Alors que COMET est très sympa, ce n'est pas la seule solution! L'interrogation habituelle avec des intervalles de temps (par opposition à l'interrogation longue COMET) est encore couramment utilisée. Il est également possible d'exiger une actualisation manuelle par l'utilisateur. Prenez l'exemple de Stackoverflow - pour la plupart des choses, vous devez actualiser votre navigateur manuellement pour voir les changements. Je pense que c'est généralement perçu comme normal et attendu. COMET ou les sondages fréquents sont un bonus supplémentaire.

Le problème avec COMET est qu'il peut facilement conduire à beaucoup de threads sur le serveur. Sauf, si vous utilisez en plus un traitement asynchrone (également appelé "IO avancé"), qui n'est pas encore bien supporté (par exemple, ne fonctionne pas avec HTTPS dans Glassfish v3 en raison d'un bug grave), peut entraîner des problèmes avec les connecteurs Apache.

Le problème avec les interrogations fréquentes est qu'il crée du trafic supplémentaire. Ainsi, il est souvent nécessaire de rendre le sondage moins fréquent, ce qui le rendra moins pratique pour l'utilisateur final.

Vous devrez donc peser les options pour votre situation particulière.

+0

Alors que les serveurs web normaux (Apache étant le plus grand délinquant, nginx le plus petit;)) ne supportent pas bien ce nombre de connexions ouvertes, les serveurs dédiés comme APE (Ajax Push Engine) et les serveurs web mieux conçus comme nginx le défi;) IMHO, comet & co place une contrainte beaucoup plus faible sur le serveur que l'interrogation constante toutes les x secondes - et vous avez besoin que x soit petit, afin de garder les données du client à jour. En outre, je ne pense pas qu'un rafraîchissement complet soit une solution ici, car cela irait à l'encontre de l'objectif de créer le site Web dans GWT. –

+0

@Igor: Je suis d'accord avec les serveurs - c'est juste que certaines personnes n'ont pas d'autre choix que d'utiliser Apache! Avec une actualisation complète, je ne souhaite pas nécessairement une actualisation complète de la page. Il peut également s'agir d'un clic sur un lien/bouton de mise à jour qui entraîne un appel Ajax.Et la question, ce qui crée plus de pression sur le serveur, Comet ou sondage constant, dépend de plusieurs facteurs: Si les messages arrivent à un rythme extrêmement rapide, ou s'ils sont distribués assez uniformément, alors l'avantage COMET est faible - mais depuis COMET est stateful, vous avez toujours le frais généraux de se souvenir de son état. Cela dépend vraiment! –