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 umfasst:
- Eine numerische ID (vom Dienst automatisch vergeben)
- Optional einen Profilnamen (den legen Sie fest)
- Eine eigene Ansicht für jedes Gerät: Basis, Montage, Voreinstellung, Filter und Workspace-Transformation
Es können mehrere Sitzungen gleichzeitig bestehen, z. B. Ihre Unity-App in einer Sitzung und „ Haply -Hub“, das das Gerät in einer anderen Sitzung überwacht. Beide sehen dasselbe physische Gerät, jedoch jeweils mit 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 (Arbeitsbereich, Basis, Baugruppe, Filter) über dessen Benutzeroberflä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 Sitzungsauswahl 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 – über eine andere WebSocket-Sitzung oder über einen HTTP-Client ganz ohne WebSocket-Verbindung. Auf diese Weise 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 Fernkonfiguration.