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.