Sujet: JAVA EE : Rafraichissement page client suit à un évenement coté serveur
15/04/2010 @ 09:06:58: andewez: JAVA EE : Rafraichissement page client suit à un évenement coté serveur
Bonjour à tous et toutes,

J'ai besoin de votre aide. Dans le cadre de mon stage, je dois développer une application WEB qui sera un Media Center.
Dans ce media center, je dois faire un treeview.

Dans un div de ma page, j'ai l'arborescence du serveur et dans l'autre un lecteur multimedia.
Je souhaiterais que quand l'utilisateur plug une clé usb sur le serveur, (oui oui, sur le serveur... vous avez bien lu :smile: ) j'arrive a dire à la page du client de se "recharger" (ou du moins juste le div si c'est possible) afin de lister ce qu'il y a sur la clé.

Donc pour résumé, comment dire à un client de rafraichir sa page ? (sans utiliser un tag Meta de rafraichissement toutes les 15sec, ce qui serait inutile si rien n'a changer...)

C'est un peu le même principe que les web mail. Quand vous recevez un mail, votre page se rafraichis pour vous afficher ce nouveau mail. (J'ose pas demander chez YAHOO! comment ils ont fait.. :banzai: )

On m'a parlé des DLL ISAPI. J'ai pensé aussi: serait-il possible que le client aille lire une variable toutes les 5sec par exemple, et qu'en fonction de la valeur, un script demande le rafraichissement de la page. Mais où pourrait se trouver cette variable ??!

Ma configuration :

  1. PC embarqué dans un véhicule (OS = Windows Embedded Standard)
  2. Serveur Apache/TomCat
  3. Clients faisant une requête au serveur : Le serveur lui même car l'application s'affichera sur un écran raccordé au PC embarqué DANS le véhicule, mais aussi un ordinateur portable dont l'OS sera inconnu voir même un smartphone...



Merci d'avance de l'aide que vous pourrez m'apporter. TOUTE idée est vraiment la bienvenue...

Andy
15/04/2010 @ 09:57:49: Clandestino: JAVA EE : Rafraichissement page client suit à un évenement coté serveur
AJAX est ton ami :itm:
15/04/2010 @ 10:23:01: gizmo: JAVA EE : Rafraichissement page client suit à un évenement coté serveur
Si c'est pour de l'embarque, le choix Apache/TomCat me semble peu judicieux, ce n'est pas ce qu'il y a de plus leger. Jetty me semble un meilleur choix.

Pour ton client, s'il s'etait limite au serveur lui-meme, outre le fait qu'un serveur web ne se justifierait plus vraiment, je serais plutot parti vers les methodes type COMET, plutot qu'AJAX.

Maintenant, comme ton client peut etre distant, outre tous les problemes de gestion des droits d'auteur que cela implique (comment empecher qu'un passant ou que la voiture qui te suis ne capte le signal), pense bien a adopter une approche qui premette un refresh manuel, au cas ou le smartphone ne supporterait pas la technologie utilisee.
15/04/2010 @ 11:23:41: andewez: JAVA EE : Rafraichissement page client suit à un évenement coté serveur
Merci de vos réponses.
Gizmo pour te répondre :
Le pc embarqué n'a selon moi que le nom. Processeur deux coeurs à 1GHz 1Go de ram etc. Franchement il tourne "carrech" comme on dit...
Pour les problème de sécurité (capter le signal), j'explique mon cas. Le pc embarqué réceptionne internet par la 3G et je le redifuse pas une clé Wifi intégré. Ainsi, j'ai simplement sécurisé avec une clé WPA. En outre, la voiture par définition est sensé se déplacer ce qui complique le "captage du signal".

Pour ce qui est de COMET et AJAX vous serait-il possible de développer votre pensée/idée ?

Dans ma tete, je vois mal comment un serveur pourrait demander à un client de rafraichir sa page à un moment donné.
Merci
15/04/2010 @ 11:37:41: gizmo: JAVA EE : Rafraichissement page client suit à un évenement coté serveur
Bon, alors, la difference entre COMET et AJAX.

Tout d'abord, soyons clair, d'un point de vue technique bas niveau, c'est, et ce sera toujours jusqu'a l'avenement des WebSocket d'HTML5, le client que effectue une requete au serveur.

La difference se place au niveau de la philosophie et de la mise en pratique.
AJAX prend le parti de dire que c'est le client contient "volontairement" un bout de code javascript destine a recuperer des information du serveur, sur demande. Il est ensuite possible de repeter cette tache plusieurs fois pour obtenir une sorte de rafrachissement "continu", mais ce n'est pas implicite a la philosophie AJAX.

COMET, de son cote va injecter du code javascript (ou flash, ou java, suivant l'implementation) dans le client qui a pour but principale de creer et maintenir une connexion avec le serveur, en relancant la connexion lors de timeout du serveur, entre autre. COMET, va egalement essayer de jouer au maximum avec les keepalive et long polling connection si le serveur le permet, ce qu'AJAX tend a ignorer.

J'espere que c'est plus clair.
15/04/2010 @ 12:31:17: Clandestino: JAVA EE : Rafraichissement page client suit à un évenement coté serveur
L'avantage, à mon sens, de l'utilisation d'AJAX côté client, c'est la légèreté de l'implémentation. Côté serveur, rien de plus facile que de gérer un flag correspondant à l'état de la clef USB (0 - pas insérée / 1 - insérée), et de rendre ce flag dispo via un petit XML partagé sur un serveur web. Côté client, le script JS aura pour fonction de monitorer la clef correspondant dans le XML du serveur et de lancer un FireEvent le cas échéant. Et comme tout se passe en LAN et non en WAN, peu importe la charge induite par le ping. De toute manière, un délai de 5 secondes entre l'insertion de la clef et le refresh du DIV correspondant sur le client est tout à fait acceptable, non ?
15/04/2010 @ 13:17:06: andewez: JAVA EE : Rafraichissement page client suit à un évenement coté serveur
@ Clandestino : tout a fait, 5sec c'est très correcte.

Pour etre plus précis, je suis étudiant en stage. Mon but c'est aussi d'apprendre. Mais le problème était que je n'avais AUCUNE idée de "par ou commencer...". Je vais me renseigner sur COMET et AJAX et j'essayerai de tester puis de proposer, dans mon TFE in fine, les avantages/inconvénients des différentes possibilités pour faire celà.
Retour