L'API EventSource introduite dans les spécificités accompagnant le HTML5 sert à récupérer et traiter des événements/messages renvoyés 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ée de la façon suivante :
var sourceEvents = new EventSource("http://urlsite/events.php");
Il y a deux utilisations possibles de cette connexion :
Dans tous les cas, les "messages" doivent être séparés par deux mises à la ligne servant à distinguer les blocs, dans le cas contraire cela signifie que la mise à la ligne fait partie des données.
Exemple de 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, on utilisera le code suivant :
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, on utilisera le code suivant :
sourceEvents.addEventListener("change", function (event) {
console.log(event.data);
//traitement à effectuer
}, false);
Dans le cas plus que probable où vous auriez une erreur, vous pouvez créer votre propre gestionnaire :
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 le navigateur.
Sources
Vous avez lu gratuitement 183 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.