Sitzungen
Was ist eine Sitzung?
Eine Sitzung wird automatisch erstellt, wenn sich ein WebSocket-Client mit Port 10001 verbindet. Eine Verbindung entspricht einer Sitzung. Wenn die Verbindung geschlossen wird, wird die Sitzung beendet und ihre Konfiguration verworfen.
Jede Sitzung hat:
- Eine numerische ID (vom Dienst automatisch vergeben)
- Optional einen Profilnamen (den legen Sie fest)
- Eine eigene Sicht auf jedes Gerät: Basis, Montage, Preset, Filter und Workspace-Transformation
Mehrere Sitzungen können nebeneinander bestehen, z. B. Ihre Unity-App in einer Sitzung und Haply Hub, das in einer anderen Sitzung das Gerät beobachtet. Beide sehen dasselbe physische Gerät, aber mit jeweils eigenen Koordinateneinstellungen.
Profilnamen festlegen
Es wird dringend empfohlen, in Ihrer ersten Nachricht einen Profilnamen festzulegen:
{
"session": {
"configure": {
"profile": {
"name": "co.mycompany.myapp:main-scene"
}
}
}
}
Warum das wichtig ist:
- Haply Hub verwendet den Profilnamen, um Ihre Simulation zu erkennen, und ermöglicht es Ihnen, Geräteeinstellungen (Workspace, Basis, Montage, Filter) über dessen Oberfläche anzupassen.
- Diese Anpassungen werden dauerhaft gespeichert — beim nächsten Start derselben App wendet Hub sie automatisch erneut an, ohne dass Sie Ihren Code ändern müssen.
- Andere Sitzungen (oder HTTP-Clients) können Ihre Sitzung über den Profilnamen ansprechen, indem sie einen Sitzungsselektor verwenden:
?session=myapp:0. Profil-Selektoren akzeptieren außerdem*/?als Glob-Platzhalter, sodass ein Namensraum wie?session=co.haply.hub::*:0funktioniert, ohne dass das vollständige Profil bekannt sein muss.
Fernsteuerung (sitzungsübergreifende Konfiguration)
Die Geräte einer Sitzung können von außen neu konfiguriert werden — durch eine andere WebSocket-Sitzung oder durch einen HTTP-Client ganz ohne WebSocket-Verbindung. So passt Haply Hub die Einstellungen Ihrer App an.
Der HTTP-Client verwendet Sitzungsselektoren, um die richtige Sitzung anzusprechen:
# 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"}'
Ein vollständiges praktisches Beispiel für die sitzungsübergreifende HTTP-Steuerung finden Sie im HTTP-Tutorial zur Remote-Konfiguration.