Bonjour, j'essaye de mettre en place un système de server push pour mettre à jour l'écran de tout les utilisateurs lors d'une action d'un des utilisateurs et ceux sans avoir à recharger la page ou à faire du long pooling en ajax. Je ne peut installer de serveur autre que jonas donc exit les websockets.

j'arrive jusqu’à présent à contacter une servlet et lui faire renvoyer l'heure comme tout les exemple qu'on trouve sur le net.

Enfin bon renvoyer l'heure toute les secondes ne va pas me servir à grand chose et je ne voit pas la différence avec du long polling.

En fait ma connexion s'ouvre , récupère l'heure et se ferme, et ainsi de suite. Mais aucune connexion ne reste ouverte plus de 1 s ce qui est embetant.

voici mon code.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
$(document)ready(function() {
     if(!!window.EventSource) {
          console.log("eventSource supporté");
          var source = new EventSource("urlDeMaServlet");
 
          source.addEventListener("message", function(e) {
                console.log(e.data);
          }, false);
 
          source.addEventListener("open", function(e) {
               console.log("connexion ouverte");
          }, false);
 
          source.addEventListener("error", function(e) {
              if (e.readyState == EventSource.CLOSED) {
                     console.log("connexion fermée");
              }
              else {
                    console.log("erreur");
             }
          },false);
    }
 
    else {
         console.log("eventSource non supporté");
    }
});

et voici le code coté server en java

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
response.setContentType("text/event-stream");
response.setCaractereEncoding("UTF-8");
response.setHeader("Cache-control", "no-cache");
printWriter output = response.getWriter();
String data = "retry : 1000\n";
data += "data : Server time  " + new Date() + "\n\n";
output.write(data);
Donc avec le code que j'ai la la connexion se ferme au bout d'1s en erreur après avoir récupéré une fois l'heure .
Et je ne sais pas comment faire pour garder la connexion ouverte et n'envoyer des données que quand un utilisateur réalise une action sur le site.