Séances
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 est fermée, la session est supprimée et sa configuration est effacée.
Chaque session comprend :
- Un identifiant numérique (attribué automatiquement par le service)
- Un nom de profil facultatif (que vous définissez)
- La vue propre à 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 en mode d'observation 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 vivement recommandé de choisir un nom de profil dès votre premier message :
{
"session": {
"configure": {
"profile": {
"name": "co.mycompany.myapp:main-scene"
}
}
}
}
Pourquoi est-ce important ? :
- Haply Hub utilise le nom du 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 enregistrées: la prochaine fois que vous exécuterez la même application, Hub les réappliquera automatiquement, sans que vous ayez à modifier votre code.
- D'autres sessions (ou 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 également les caractères génériques*/?, de sorte qu'un espace de noms tel que?session=co.haply.hub::*:0fonctionne sans qu'il soit nécessaire de connaître le profil complet.
Contrôle à distance (configuration entre les sessions)
Les appareils d'une session peuvent être reconfigurés depuis l'extérieur, soit via une autre session WebSocket, soit via 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 sur la configuration HTTP à distance pour découvrir un exemple complet de contrôle HTTP entre sessions.