Evénements envoyés par le serveur - SSE

Afficher sur la page les dernières versions de package de serveur

Nous voulions un affichage sur le site Web qui montrerait les versions de tous les principaux logiciels que nous avions installés sur le serveur. Nous déterminerions les paquets que nous voulions suivre, et après cela, l'affichage Web devrait automatiquement se mettre à jour régulièrement. (Nous en montrons juste quelques-uns ici).

Linux shell script

Une tâche Crontab a été configurée pour exécuter un script shell Linux régulièrement. Le script effectue les tâches suivantes:

  • Trouver des versions d'une liste prédéterminée de progiciels, et extraire ces numéros de version à partir de quantités variables de texte auxiliaire
  • Créez des paires valeur / clé des noms de paquetages et des numéros de versions et ajoutez une mise en forme html de base
  • Stockez-les comme une seule chaîne dans un fichier journal simple. Nous aurions pu utiliser JSON.

Evénements et Client Listeners

Nous avons créé un fichier côté serveur (en PHP) qui serait la source des événements, ce qui permettrait d'accéder aux données de deux événements distincts:

  • La chaîne générée par Crontab, qui afficherait les versions du paquet
  • Une fonction horaire qui montrerait l'heure du serveur
Lorsque le client accède au fichier côté serveur, ce dernier renvoie un simple message HTTP comprenant:
  • Un en-tête - Content-Type: texte / flux d'événements
  • Deux blocs d'événement de code qui spécifient les données pour les deux événements à savoir. la chaîne de versions, et l'heure du serveur
L'en-tête text / event-stream, lu par le navigateur, oblige ce dernier à se reconnecter constamment au fichier côté serveur. La période de reconnexion peut être contrôlée et ici, nous avons fixé cela à environ 5 secondes.

Dans les pages Web du client, nous créons un objet EventSource à l'aide d'un script JS et cet objet EventSource pointe vers le fichier côté serveur et crée également des écouteurs pour les deux événements.

Si aucun événement séparé n'a été spécifié dans le fichier serveur, 'onmessage' aurait pu être utilisé à la place des écouteurs, mais comme nous avons nommé deux événements distincts, nous utilisons addEventListener (eventname, ...) avec EventSource dans le script js.

Ces événements apparaissent ci-dessous sous la forme d'une liste de packages et de versions, et d'une heure.

La restriction de cette méthode est que les deux événements sont actualisés au même rythme ... au fur et à mesure que la page se recharge.

Rapport de version du package de serveur automatisé

Les versions installées sont:

SSE inactif

Mise à jour

L'heure du serveur est:

SSE inactif

Pour Fermer La Connection