Sessions
Qu'est-ce qu'une session ?
Une session est créée automatiquement lorsqu'un client WebSocket se connecte au port 10001. Une connexion = une session. Lorsque la connexion se ferme, la session est détruite et sa configuration est supprimée.
Chaque session comporte :
- Un ID numérique (attribué automatiquement par le service)
- Un nom de profil facultatif (que vous définissez)
- Sa propre vue de chaque appareil : base, montage, préréglage, filtres et transformation de l'espace de travail
Plusieurs sessions peuvent coexister, par exemple votre application Unity sur une session et Haply Hub qui observe sur une autre. Chacune voit le même appareil physique, mais avec ses propres paramètres de coordonnées.
Définir un nom de profil
Il est fortement recommandé de définir un nom de profil dès votre premier message :
{
"session": {
"configure": {
"profile": {
"name": "co.mycompany.myapp:main-scene"
}
}
}
}
Pourquoi c'est important :
- Haply Hub utilise le nom de profil pour reconnaître votre simulation et vous permettre de modifier les paramètres de l'appareil (espace de travail, base, montage, filtres) depuis son interface.
- Ces modifications sont conservées : la prochaine fois que vous exécuterez la même application, Hub les réappliquera automatiquement, sans aucune modification de votre code.
- D'autres sessions (ou des clients HTTP) peuvent cibler votre session par son nom de profil
à l'aide d'un sélecteur de session :
?session=myapp:0. Les sélecteurs de profil acceptent aussi les caractères génériques*/?, de sorte qu'un espace de noms comme?session=co.haply.hub::*:0fonctionne sans qu'il soit nécessaire de connaître le profil complet.
Contrôle à distance (configuration inter-sessions)
Les appareils d'une session peuvent être reconfigurés de l'extérieur, soit par une autre session WebSocket, soit par un client HTTP sans aucune connexion WebSocket. C'est ainsi que Haply Hub modifie les paramètres de votre application.
Le client HTTP utilise des sélecteurs de session pour cibler la bonne session :
# List all sessions
curl http://localhost:10001/sessions
# Look up a single session directly (path-form of the selector — same
# expressions as `?session=`, see Selectors for the full grammar)
curl http://localhost:10001/sessions/:myapp:0
# Change the basis on session with profile "myapp" (first match)
curl -X POST "http://localhost:10001/inverse3/0/config/basis?session=myapp:0" \
-H "Content-Type: application/json" \
-d '{"permutation": "XZY"}'
# Same, but target the first session in a namespace (profile wildcard)
curl -X POST "http://localhost:10001/inverse3/0/config/basis?session=co.haply.hub::*:0" \
-H "Content-Type: application/json" \
-d '{"permutation": "XZY"}'
Consultez le tutoriel HTTP de configuration à distance pour un exemple complet de contrôle HTTP inter-sessions.