본문으로 이동

세션

세션이란 무엇인가요?​

WebSocket 클라이언트가 포트 10001에 연결하면 세션이 자동으로 생성됩니다. 연결 1개 = 세션 1개입니다. 연결이 종료되면 세션이 삭제되고 해당 구성도 제거됩니다.

각 세션은 다음으로 구성됩니다:

  • 디지털 ID (서비스에서 자동으로 할당됨)
  • 선택 사항인 프로필 이름 (사용자가 직접 지정)
  • 각 도구의 개별 화면: 기본 설정, 편집, 사전 설정, 필터 및 작업 공간 변환

여러 세션이 동시에 존재할 수 있습니다. 예를 들어, 한 세션에서는 Unity 애플리케이션을 실행하고, 다른 세션에서는 이를 관찰하는 Haply Hub를 실행할 수 있습니다. 각 세션은 동일한 물리적 장치를 인식하지만, 각자 고유한 좌표 설정을 사용합니다.

프로필 이름 설정하기​

첫 메시지를 보낼 때부터 프로필 이름을 설정하는 것이 강력히 권장됩니다:

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

이것이 중요한 이유는 다음과 같습니다:

  • Haply Hub는 프로필 이름을 사용하여 사용자의 시뮬레이션을 식별하고, 사용자가 Hub 인터페이스를 통해 장치 설정(작업 공간, 베이스, 마운트, 필터)을 수정할 수 있도록 합니다.
  • 이러한 변경 사항은 저장됩니다. 다음에 동일한 애플리케이션을 실행할 때 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 구성 튜토리얼을 참조하세요.