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

GWT et Vaadin Java Discussion :

Rafraichir un widget depuis le serveur


Sujet :

GWT et Vaadin Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Rafraichir un widget depuis le serveur
    Est-il possible côté serveur d'alerter un widget côté client qu'il doit se rafraichir ?
    Je me trouve face à se problème pour faire un chat et je voudrai que la zone de discussion se rafraichisse quand une autre personne a envoyé un msg.

    Merci

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    Je pense que tu peux utiliser des contrôleurs côté serveur.
    En gros, le contrôleur connaît est un singleton qui connaît toutes les utilisateurs connectés, comme ceci, tu reçois un message sur ton serveur qui doit aller d'un utilisateur X à un utilisateur Y. Le contrôleur récupère le message de X et peut avertir Y en déclenchant un rafraîchissement.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    merci pour ta réponse, tu as bien résumé ce que je cherche à faire.
    Mais donc je ne sais pas comment faire une alerte pour déclencher un rafraichissement.
    Tout les tutos que je trouve avec le design pattern MVC, les trois couches sont du côté client. Pour les échanges client-serveur, tout ce que je sais faire se sont les services qui sont appelés côté client.

    merci

  4. #4
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    En fait tu peux faire, un contrôleur côté serveur qui connaît tous les clients.

    Et un contrôleur pour chaque client qui connaît tous les éléments graphiques du client.

    Ainsi, tu n'as pas de mélange entre client et serveur.

    Le contrôleur client X appelle le contrôleur serveur qui appelle le contrôleur client Y.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je pose mal ma question.
    J'ai bien compris comment organiser mon code, seulement je ne connais pas les moyens disponibles pour arriver à mes fins.
    Ce que je cherche, ce sont les classes/méthodes dans gwt ou autre qui vont me permettre de déclencher une alerte depuis le serveur pour prévenir le client.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2009
    Messages : 36
    Points : 45
    Points
    45
    Par défaut Timer
    Tu peut utiliser un Timer coté client pour scruter le serveur afin de récupérer les messages en attente.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        com.google.gwt.user.client.Timer t = new com.google.gwt.user.client.Timer () {
          public void run() {
            recuperer les messages en attente via un appel rpc
          }
        };   
        t.schedule(15000);//tout les 15 secondes
    Cote serveur tu stock les messages en attente dans une liste que tu vide à chaque fois que le client les récupère.

    A noter que cote serveur tu dois aussi garder la liste des sessions ouvertes(les clients connectes), en utilisant le sessionlistener.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Est-ce vraiment "propre" de faire comme ça ?
    J'ai cru comprendre qu'on ne pouvait faire de socket en javascript donc ni avec gwt.
    N'y a-t-il pas de moyen détourné simple pour en utiliser ?

    15 sec ça me parait long pour le rafraichissement d'un chat "live" genre messagerie instantanée. Quel sont les ordres de grandeur pour avoir des rafraichissement plus fréquent sans saturer le serveur ?

    Merci

  8. #8
    Membre actif

    Inscrit en
    Juin 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2003
    Messages : 229
    Points : 223
    Points
    223
    Par défaut
    Tu es obligé d'utiliser un timer pour scruter le serveur, il n'y a pas d'autres solutions (sans plugin).

    Ensuite, pour le temps de rafraichissement, ça dépend principalement de ton serveur, il n'y a pas de réponse dans l'absolu.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    ok merci pour vos réponses.

  10. #10
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Ton problème se résume à faire du "push", c'est à dire que les données sont poussées du serveur vers le client.

    Or actuellement, en http, c'est toujours le client qui est à initiative de la connexion.

    1) La première façon est donc que le client s'informe à intervalles réguliers auprès du serveur (objectif du code présenté par moonair). L'inconvénient est que si le pas temporel est trop grand, on perd en réactivité et s'il est trop court, on maximise le trafic en faisant pleins de requêtes inutiles.

    Les seules autres alternatives sont :

    2) Utiliser une techno qui permet de gérer des sockets (flash, applet, ...)

    3) Attendre HTML 5 et ses websockets


    Citation Envoyé par pedouille Voir le message
    Tu es obligé d'utiliser un timer pour scruter le serveur, il n'y a pas d'autres solutions (sans plugin).
    4) Utiliser Comet : L'idée est de maintenir une connexion http ouverte afin que le serveur puisse faire son push. Le bouquin "GWT in Practice" en parle.

    Voir aussi : http://weblogs.java.net/blog/jfarcan...T_BOF-4922.pdf

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  11. #11
    Membre actif

    Inscrit en
    Juin 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2003
    Messages : 229
    Points : 223
    Points
    223
    Par défaut
    Je ne connaissais pas Comet, et ça a l'air vraiment pratique (je suis bon pour recoder une partie de mes applis :-/ ), en particulier ce projet :

    http://code.google.com/p/rocket-gwt/wiki/Comet

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

Discussions similaires

  1. [VB.Net][1.1] Accéder au Body depuis le serveur
    Par CUCARACHA dans le forum ASP.NET
    Réponses: 1
    Dernier message: 04/03/2006, 11h38
  2. Script pour extraire la meteo depuis un serveur XML.Probleme
    Par Zarma67 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/02/2006, 11h13
  3. mon poste est invisible depuis le serveur
    Par StyleXP dans le forum Administration
    Réponses: 13
    Dernier message: 08/01/2006, 22h32
  4. [InputStream][http] télécharger depuis un serveur web
    Par FFF dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 08/11/2005, 11h32
  5. download de fichier depuis un serveur web
    Par minusette dans le forum Modules
    Réponses: 9
    Dernier message: 14/10/2005, 09h10

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