Serveur
Categories:
Présentation
Le module utilitaire Server expose les résultats d’ALS via un service HTTP et WebSocket léger.
Il est chargé de :
- Publier la dernière image empilée et les métriques de session dans le dossier web configuré
- Servir l’application web de visualisation (
index.html, JavaScript et icônes) - Diffuser en direct les notifications de nouvelle image aux navigateurs connectés par WebSocket
Le module fonctionne dans sa propre boucle d’événements asyncio et accepte plusieurs clients simultanés. Il n’altère jamais le pipeline de traitement : il se contente de servir les sorties produites par le module Save.
Configuration
| Paramètre | Source | Type de donnée | Requis | Valeur par défaut |
|---|---|---|---|---|
| Dossier web | Préférences : Onglet Sorties | Chemin vers un dossier | Oui | Alias du dossier de travail |
| Dossier web dédié | Préférences : Onglet Sorties | Booléen | Non | Désactivé |
| Adresse affichée | Préférences : Onglet Sorties | Chaîne (auto ou ip:<adresse>) |
Oui | Auto - recommandé |
| Port | Préférences : Onglet Sorties | Entier (1024–65535) | Oui | 8000 |
Contrôle
| Source | Type | Réponse |
|---|---|---|
| Panneau Contrôles principaux | Commande : START |
Prépare les ressources web et lance le thread serveur |
| Panneau Contrôles principaux | Commande : STOP |
Prévient les clients et arrête le serveur. Les ressources web restent disponibles sur le disque |
Sorties
Une fois démarré, le module maintient les artefacts suivants dans le dossier web :
| Artefact | Description |
|---|---|
index.html |
Interface embarquée affichant l’image empilée en direct |
favicon.ico & icons/*.png |
Ressources du visualiseur copiées depuis le bundle d’ALS |
data.json |
Métriques de session (STACK_SIZE, EXPO) mises à jour après chaque empilement |
web_image.jpg |
Dernière image traitée sauvegardée en JPEG pour le navigateur |
openseadragon.min.js |
Bibliothèque de visualisation à zoom profond utilisée par l’interface |
Comportement
Séquence de démarrage
- Publier les ressources statiques —
index.html, les icônes et l’image d’attente sont écrits (ou rafraîchis) dans le dossier web pour un chargement immédiat des clients. - Exposer les métriques de session —
data.jsonest généré avec la taille de stack courante et le temps d’exposition cumulé. - Valider la disponibilité — le module tente la liaison réelle du serveur sur
0.0.0.0:<port>. UnPortInUseErrorest levé si le port configuré ne peut pas être utilisé. - Lancer la boucle serveur — une boucle asyncio démarre dans un thread dédié, sert HTTP sur toutes les interfaces IPv4 locales et accepte les connexions WebSocket sur
/ws. - Annoncer la disponibilité — ALS résout la préférence Adresse affichée configurée et met à jour son interface avec l’adresse sélectionnée.
Liaison et adresse affichée
L’adresse de liaison et l’adresse affichée sont volontairement séparées :
- Le serveur se lie à
0.0.0.0pour accepter les connexions depuis toute interface IPv4 locale disponible. - L’Adresse affichée est une adresse locale concrète qu’un autre appareil peut utiliser pour naviguer vers le serveur d’images.
Si l’Adresse affichée sélectionnée est une adresse loopback, le module reste actif mais signale que l’accès au serveur d’images est limité afin que vous puissiez choisir une autre Adresse affichée lorsqu’une autre adresse est disponible.
Mises à jour en direct
- Après chaque image traitée, le JPEG courant et
data.jsonsont réécrits dans le dossier web. notify_browsers_about_new_image()envoie{ "type": "new_image" }à tous les clients WebSocket pour qu’ils rechargent la texture sans scrutation.- La même infrastructure diffuse
{ "type": "disconnect" }juste avant l’arrêt, permettant aux clients d’afficher un message approprié.
Arrêt
Lorsque la commande STOP est déclenchée :
- Tous les clients reçoivent un message
disconnect. - Le module attend brièvement (2 secondes) que les navigateurs ferment la connexion.
- Le runner asyncio est nettoyé et le thread dédié s’arrête.
- L’interface réinitialise le statut et le QR code ; les fichiers statiques restent présents pour la prochaine session.
Référence WebSocket
| Message | Charge utile | Déclencheur |
|---|---|---|
new_image |
{ "type": "new_image" } |
Une nouvelle image traitée est disponible |
disconnect |
{ "type": "disconnect" } |
Le serveur est en cours d’arrêt |
Dépannage
- Changez le port dans les préférences si ALS signale que le port est déjà utilisé.
- Si un autre appareil ne peut pas naviguer vers le serveur d’images, sélectionnez une Adresse affichée appartenant au même réseau que l’appareil qui utilise le navigateur, puis réessayez l’URL ou le QR code.
- Vérifiez que votre pare-feu autorise les connexions entrantes sur le port configuré.