l'API EventSource introduite dans les spécificités accompagnant le HTML5 sert à récupérer et traiter
des événements/messages renvoyé par un serveur sur une connexion http continue.
Les données sont retournées au format "text/event-stream".
Une source d’événement peut être déclaré de la façon suivante
Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
var sourceEvents = new EventSource("http://urlsite/events.php");

Il y a deux utilisations possible de cette connexion
  1. remontée de message uniquement
  2. remontée d’événement avec ou sans données

Dans tous les cas les "messages" doivent être séparées par 2 mises à lignes servant à distinguer les blocs
dans le cas contraire cela signifie que la mise à la ligne fait partie des données

Exemple données message uniquement
data: This is the first message.

data: This is the second message, it
data: has two lines.

data: This is the third message.
Dans ce cas de figure l'on utiliseras le code suivant
Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
sourceEvents.onmessage = function (event) {
    console.log(event.data);
    //traitement à effectuer
};

Voici maintenant un cas avec des événements
event: add
data: 73857293

event: remove
data: 2153

event: add
data: 113411
Dans ce cas de figure l'on utiliseras le code suivant
Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
sourceEvents.addEventListener("change", function (event) {
    console.log(event.data);
    //traitement à effectuer
}, false);

Dans le cas plus que probable ou vous auriez une erreur
vous pouvez créer votre propre gestionnaire

Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
sourceEvents.onerror = function (e) {
    console.log(e);
    if (sourceEvents.readyState == 2) {
        // traitement en cas de déconnexion définitive
        }
    if (sourceEvents.readyState == 0) {
        //traitement dans le cas d'une déconnexion temporaire
    }
};

/!\ En cas de déconnexion celle-ci est relancée automatiquement au bout de 3 secondes par les navigateur

Si vous souhaitez en savoir plus pour le côté serveur voici un exemple en PHP sur mon blog http://www.developpez.net/forums/blo...e-serveur-php/

Sources