세션
세션이란 무엇인가요?
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 다음 연결 시 설정을 다시 적용할 수 있습니다.