Zum Hauptinhalt springen
Version: 3.5.x

Sitzungen

Was ist eine Sitzung?

Eine Sitzung wird automatisch erstellt, wenn ein WebSocket-Client eine Verbindung zum Port 10001 herstellt. 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)
  • Ein optionaler Profilname (den Sie festlegen)
  • Eine eigene Ansicht für jedes Gerät: Basis, Halterung, Voreinstellung, Filter und Arbeitsbereichstransformation

Es können mehrere Sitzungen gleichzeitig bestehen – z. B. Ihre Unity-App in einer Sitzung und Haply Hub in einer anderen. Beide sehen dasselbe physische Gerät, jedoch mit ihren eigenen Koordinateneinstellungen.

Einen Profilnamen festlegen

Es wird dringend empfohlen, in Ihrer ersten Nachricht einen Profilnamen anzugeben:

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

Warum das wichtig ist:

  • Haply nutzt den Profilnamen, um Ihre Simulation zu erkennen und Ihnen zu ermöglichen, die Geräteeinstellungen (Arbeitsbereich, Basis, Mount, Filter) über die Benutzeroberfläche anzupassen.
  • Diese Anpassungen werden gespeichert – wenn Sie dieselbe App das nächste Mal starten, wendet Hub sie automatisch erneut an, ohne dass Sie dafür Änderungen am Code vornehmen müssen.
  • Andere Sitzungen (oder HTTP-Clients) können Ihre Sitzung anhand des Profilnamens mithilfe eines Sitzungsauswahl: ?session=myapp:0. Profilauswähler akzeptieren auch * / ? globale Platzhalter, also ein Namensraum wie ?session=co.haply.hub::*:0 funktioniert, ohne dass man das vollständige Profil kennen muss.

Fernsteuerung (sitzungsübergreifende Konfiguration)

Die Geräte einer Sitzung können von außen neu konfiguriert werden – entweder durch eine andere WebSocket- Sitzung oder durch einen HTTP-Client, der überhaupt keine WebSocket-Verbindung unterhält. Auf diese Weise passtHaply die Einstellungen Ihrer App an.

Der HTTP-Client verwendet Sitzungsselektoren, um die richtige Sitzung anzusteuern:

# 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 ausführliches Praxisbeispiel für die sitzungsübergreifende HTTP-Steuerung finden Sie im Tutorial zu HTTP Remote Config.