본문으로 건너뛰기

세션

세션이란​

세션은WebSocket 클라이언트가 포트 10001에 연결하면 자동으로 생성됩니다. 연결 하나당 세션이 하나씩 생성됩니다. 연결이 종료되면 세션이 삭제되고, 해당 설정도 함께 삭제됩니다.

각 세션에는 다음이 포함됩니다:

  • 숫자형 ID(서비스에서 자동으로 할당됨)
  • 임의의 프로필 이름(사용자가 직접 설정합니다)
  • 모든 장치에 대한 고유한 보기: 기준, 마운트, 사전 설정, 필터, 작업 공간 변환

여러 세션을 동시에 실행할 수 있습니다. 예를 들어, 한 세션에서는 Unity 앱을 실행하고, 다른 세션에서는 ‘ Haply Hub’를 모니터링할 수 있습니다. 각 세션은 동일한 물리적 장치를 참조하지만, 각각 고유한 좌표 설정을 가지고 있습니다.

프로필 이름 설정​

첫 번째 메시지에서 프로필 이름을 설정할 것을 강력히 권장합니다:

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

중요한 이유:

  • Haply Hub는 프로필 이름을 통해 시뮬레이션을식별하며, 해당 UI를 통해 장치 설정(작업 공간, 기준, 마운트, 필터)을 조정할 수 있게 해줍니다.
  • 이러한 조정 사항은영구적으로 저장됩니다. 다음에 동일한 앱을 실행하면 Hub가 코드를 변경하지 않고 자동으로 이를 다시 적용합니다.
  • 다른 세션(또는 HTTP 클라이언트)은,세션 선택기 을 사용하여 프로필 이름으로 현재 세션을 지정할 수 있습니다:?session=myapp:0. 프로필 선택기는 * 그리고 ? 의 글로브 와일드카드도 접수하므로,?session=co.haply.hub::*:0 이러한 네임스페이스는 전체 프로필 이름을 알지 못해도 작동합니다.

원격 제어 (세션 간 설정)​

세션의 디바이스는외부에서재설정할 수 있습니다. 다른 WebSocket 세션에서든, WebSocket 연결이 없는 HTTP 클라이언트에서든 가능합니다. 이것이 바로 Haply Hub가 앱 설정을 조정하는 방식입니다.

HTTP 클라이언트는세션 선택자를 사용하여 적절한 세션을 지정합니다:

# 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"}'

세션 간 HTTP 제어에 대한 완전한 예시는HTTP 원격 구성 튜토리얼을 참조하십시오.