IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Affichage d'un message sur toute les sessions actives


Sujet :

Struts 1 Java

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Affichage d'un message sur toute les sessions actives
    Bonjour,

    Voilà ce que je dois faire : j'ai une page d'administration qui doit permettre de créer un message (du genre : "Attention : maintenance dans 10 minutes") et qui devra s'afficher sur toutes les sessions actives dès le moment ou elle est publiée.

    Je ne vois pas comment, à partir d'une action, générer un "stimuli" qui va modifier une partie de page des autres sessions (j'aimerais éviter que toutes mes sessions interroge toutes les 30 secondes le serveur pour voir s'il existe quelque chose à afficher...)

    Avez-vous des mots clé pour me mettre sur une piste ? Pour moi, cela peut s'apparenter à une sorte de chat tel qu'il existe sur gtalk (web) ou Facebook.

    On m'a parlé des portlets : j'ai regardé la doc et comment ça marche. Toujours la même question : je ne vois pas comment donner ce stimuli pour que toutes les sessions reçoivent le message.

    Merci d'avance de vos réponses.


    Technologies : Java, Struts 2, Spring, Hibernate, Jonas, JSP, jQuery, jqGrid

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    Le gros problème est que le WEB est fondamentalement client serveur : c'est les clients (les navigateurs WEB) qui doivent prendre l'initiative de venir se connecter au serveur. Hors ici c'est plutôt votre serveur qui doit avertir les clients...
    Deux possibilités :
    1. Utiliser AJAX pour que les clients vérifient à intervalles réguliers si il y a une alerte.
    2. Toujours avec AJAX, se connecter au serveur pour vérifier si il y a une alerte. Contrairement à la version 1, celui-ci met le thread en suspend jusqu'à ce qu'il y ait effectivement une alerte, ou après un time out.

    La solution 2 est un gros hack, ne vous lancez pas là dedans sans savoir ce que vous faites. Mais elle a l'avantage que les utilisateurs sont prévenus immédiatement, car dès qu'une alerte est lancée, le serveur peut relancer tous les threads en suspend. Avec la solution 1, l'utilisateur ne peut être prévenu que quand son navigateur fait l'une des vérifications.

    Comme votre alerte est un message du type "Maintenance dans dix minutes", je pense que le délai de la solution 1 n'est pas un problème. Comme elle est beaucoup plus simple, c'est ce que je vous recommande.

    Sinon, il me semble que HTML 5 dispose de mécanismes plus élégants, mais je ne saurais pas le garantir, et il faudrait que vous puissiez imposer un navigateur à vis utilisateurs.

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci pour la réponse.

    Hélas non, impossible de forcer les utilisateurs à utiliser Chrome ou FF. Ils ne naviguent qu'avec IE 7. Donc adieu HTML 5.

    Après discussion avec le fonctionnel, nous laissons tombé le "temps réel". Chaque page affichera le message lors de son rechargement.

    Pour ma culture :
    2. Toujours avec AJAX, se connecter au serveur pour vérifier si il y a une alerte. Contrairement à la version 1, celui-ci met le thread en suspend jusqu'à ce qu'il y ait effectivement une alerte, ou après un time out.

    C'est donc ainsi que serait codé gtalk, yahoo! et FB ? Si non, de quelle manière ?

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    Ce n'est qu'une spéculation de ma part, mais je pense en effet que c'est la façon dont est programmée GTalk. C'est la technique dite de long polling.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par BugFactory Voir le message
    Ce n'est qu'une spéculation de ma part, mais je pense en effet que c'est la façon dont est programmée GTalk. C'est la technique dite de long polling.
    avec l'inconvénient que ca bouffe un socket sur le serveur

    Sinon pour le HTML5, c'est possible avec le websocket il me semble.
    Reste aussi l'option de l'applet qui se connecterais sur un port dédié, mais ça fait lourd dingue. En général on est content avec un ajax qui poole toutes les 30 secondes
    A noter que si vous voulez pas vous emmerder a le faire vous meme, vaadin dispose déjà de tout ça pour faire des jolie applications "comme desktop" dans le browser :p Le serveur peu lancer des popups, des fenetre ou des notifications quand bon lui semble

  6. #6
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci pour tous ces compléments d'informations. A l'avenir, je saurai quoi mettre en place lorsque, pris d'une grande motivation, je voudrai recoder Gtalk

    En attendant, le développement sur l'application a déjà été fait entre temps (hé oui, en entreprise, on préfère les solutions simple et rapide à mettre en place). Après accord de la MOA, les messages publiés ne sont donc pas pris en temps réel.

    En tout cas, merci à vous, j'ai appris des choses

    /me note dans son pense bête : "long polling"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage litebox et dialog sur tout les navigateurs sauf IE
    Par Nico1131 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 28/04/2014, 17h34
  2. Affichage sur toutes les résolutions
    Par ghost73 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 21/09/2012, 18h16
  3. Install presente sur toutes les sessions
    Par topolino dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/06/2009, 16h32
  4. IIS / ASP.Net / Toutes les sessions actives tombent
    Par romulus dans le forum ASP.NET
    Réponses: 43
    Dernier message: 19/03/2009, 17h08
  5. Réponses: 11
    Dernier message: 23/06/2006, 11h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo