주요 내용으로 이동

대화

세션이란 무엇인가요?​

WebSocket 클라이언트가 포트 10001에 연결되면 자동으로세션이생성됩니다. 하나의 연결은 하나의 세션에 해당합니다. 연결이 종료되면 해당 세션은 즉시 삭제되며, 그 구성 정보도 함께 제거됩니다.

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

  • 하나의 디지털 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 원격 구성 튜토리얼을참조하십시오.