회의
세션이란 무엇인가요?
웹소켓 클라이언트가 포트 10001에 연결하면 세션이 자동으로 생성됩니다. 하나의 연결은 하나의 세션에 해당합니다. 연결이 종료되면 세션도 종료되며 해당 세션의 구성은 삭제됩니다.
각 세션에는 다음이 포함됩니다:
- 숫자 ID (서비스에서 자동으로 할당됨)
- 선택 사항: 프로필 이름 (사용자가 직접 지정)
- 각 기기에 대한 독자적인 관점: 기본 설정, 마운팅, 프리셋, 필터 및 워크스페이스 변환
여러 세션이 동시에 존재할 수 있습니다. 예를 들어, 한 세션에서는 Unity 앱이 실행되고, 다른 세션에서는 Haply Hub가 해당 장치를 모니터링하는 경우입니다. 두 세션 모두 동일한 물리적 장치를 인식하지만, 각각 고유한 좌표 설정을 사용합니다.
프로필 이름 설정하기
첫 번째 메시지에서 프로필 이름을 설정하는 것이 강력히 권장됩니다:
{
"session": {
"configure": {
"profile": {
"name": "co.mycompany.myapp:main-scene"
}
}
}
}
이것이 중요한 이유:
- Haply Hub는 프로필 이름을 사용하여 사용자의 시뮬레이션을 식별하며, 사용자는 Hub의 사용자 인터페이스를 통해 장치 설정(작업 공간, 베이스, 어셈블리, 필터)을 조정할 수 있습니다.
- 이러한 설정은 영구적으로 저장됩니다. 동일한 앱을 다음에 실행할 때 Hub는 사용자가 코드를 수정할 필요 없이 자동으로 해당 설정을 다시 적용합니다.
- 다른 세션(또는 HTTP 클라이언트)은 프로필 이름을 사용하여 다음을 호출함으로써 귀하의 세션에 접근할 수 있습니다. 세션 선택기 사용법:
?session=myapp:0. 프로필 선택기는 또한 다음을 허용합니다*/?'glob'을 와일드카드로 사용하여, 다음과 같은 네임스페이스가 생성되도록 합니다.?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 튜토리얼에서 확인할 수 있습니다.