주요 콘텐츠로 건너뛰기
버전: 3.5.x

세션

세션이란 무엇인가요?

WebSocket 클라이언트가 포트 10001에 연결하면 세션이 자동으로 생성됩니다. 연결 하나당 세션 하나가 생성됩니다. 연결이 종료되면 세션이 삭제되고 해당 구성 정보는 폐기됩니다.

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

  • 숫자 ID (서비스에서 자동 할당됨)
  • 선택 사항인 프로필 이름 (사용자가 직접 설정)
  • 각 장치에 대한 자체 뷰: 기본 설정, 마운트, 사전 설정, 필터 및 작업 공간 변환

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

프로필 이름 설정하기

첫 메시지에 프로필 이름을 설정하는 것을 강력히 권장합니다:

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

이것이 중요한 이유:

  • Haply 프로필 이름을 사용하여 사용자의 시뮬레이션을 식별하고, UI를 통해 장치 설정(작업 공간, 기저 함수, 마운트, 필터)을 조정할 수 있게 해줍니다.
  • 이러한 설정 변경 사항은 저장됩니다. 다음에 같은 앱을 실행하면, 개발자가 코드를 수정할 필요 없이 Hub가 해당 설정을 자동으로 다시 적용합니다.
  • 다른 세션(또는 HTTP 클라이언트)은 프로필 이름을 사용하여 다음과 같이 세션 선택기: ?session=myapp:0.

원격 제어 (세션 간 설정)

세션에 연결된 기기는 외부에서 재구성할 수 있습니다. 다른 WebSocket 세션을 통해서든, WebSocket 연결이 전혀 없는 HTTP 클라이언트를 통해서든 가능합니다. 이것이 바로 Haply 앱 설정을 조정하는 방식입니다.

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

# List all sessions
curl http://localhost:10001/sessions

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

세션 간 HTTP 제어에 대한 자세한 실제 예제는 Remote Config 튜토리얼을 참조하세요.

세션 수명 주기

세션은 일시적이며, 서비스가 재시작되면 유지되지 않습니다. 프로필 이름을 지정하면 Haply 다음 연결 시 설정을 다시 적용할 수 있습니다.