Server push Comment faire?
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:
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:
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.