Skip to main content
Version : 3.5.x

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 (à définir par vos soins)
  • Une vue spécifique pour chaque appareil : base, support, préréglage, filtres et transformation de l'espace de travail

Plusieurs sessions peuvent coexister — par exemple, votre application Unity dans une session et Haply Hub en mode observation dans une autre. Chacune d'entre elles 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é d'indiquer le nom de votre profil dans votre premier message :

{
"session": {
"configure": {
"profile": {
"name": "co.mycompany.myapp:main-scene"
}
}
}
}

Pourquoi c'est important :

  • Haply utilise le nom du profil pour identifier votre simulation et vous permettre de modifier les paramètres de l'appareil (espace de travail, base, montage, filtres) depuis son interface utilisateur.
  • Ces modifications sont enregistrées: la prochaine fois que vous lancerez la même application, Hub les réappliquera automatiquement sans que vous ayez à modifier le code.
  • D'autres sessions (ou clients HTTP) peuvent cibler votre session par nom de profil en utilisant un sélecteur de session: ?session=myapp:0. Les sélecteurs de profil acceptent également * / ? les caractères génériques « * », donc un espace de noms tel que ?session=co.haply.hub::*:0 fonctionne sans qu'il soit nécessaire de connaître le profil complet.

Télécommande (configuration inter-sessions)

Les périphériques d'une session peuvent être reconfigurés depuis l'extérieur — par une autre session WebSocket ou par un client HTTP ne disposant d'aucune connexion WebSocket. C'est ainsi que Haply 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 à distance HTTP pour découvrir un exemple complet et détaillé de contrôle HTTP inter-sessions.