2010-12-15 67 views
0

J'ai une application Web basée sur Java (entretoises 1.2). J'ai une exigence pour afficher un statut sur le frontend (jsp). Maintenant, le statut peut changer et mon serveur est averti par un autre serveur. Mais je veux que ce changement de statut soit notifié au navigateur.Notification d'un navigateur à propos des événements sur le serveur

Je ne souhaite pas effectuer de rafraîchissement à intervalles réguliers. Au contraire, je dois mettre en œuvre quelque chose comme fait dans le chat Gmail, c'est à dire. le navigateur est averti en changeant les événements sur le serveur.

Des idées pour y parvenir?

Je pensais sur les lignes d'ouverture d'une requête au serveur pour l'état, et à la fin du serveur je tiens la demande et ne répondrait pas jusqu'à ce qu'il y ait un changement d'état. Des pointeurs, des exemples à ce sujet?

Répondre

1

La meilleure solution possible sera d'utiliser le protocole XMPP. Il est standardisé et de nombreuses solutions open source vous permettront de démarrer en quelques minutes. Vous pouvez utiliser la combinaison de Smack, StropheJS et Openfire pour que votre application Java fonctionne comme vous le souhaitez.

1

Il existe une méthode appelée Relève longue (Comet). Il envoie essentiellement une requête au serveur. Le thread de demande créé sur le serveur attend simplement de nouvelles données pour l'utilisateur, avec une limite de temps d'environ 1 minute ou plus. Lorsque de nouvelles données sont disponibles, elles sont renvoyées.

Le problème principal est de résoudre le problème côté serveur, vous ne voulez pas avoir un thread pour chaque utilisateur qui attend de nouvelles données. Bien sûr, vous pouvez utiliser des méthodes asynchrones en fonction de votre back-end.

Ref: http://en.wikipedia.org/wiki/Push_technology

façon alternative serait d'utiliser WebSockets. Le problème est que ce n'est pas supporté par tous les navigateurs aujourd'hui.