セッション
セッションとは
セッションは、WebSocket クライアントがポート 10001 に接続すると自動的に作成されます。接続 1 つにつきセッションは 1 つです。接続が切断されると、セッションは破棄され、その設定も破棄されます。
各セッションには以下の内容が含まれます:
- 数値のID(サービスによって自動的に割り当てられます)
- 任意のプロファイル名(ご自身で設定してください)
- すべてのデバイスに対する独自のビュー:基準、マウント、プリセット、フィルター、ワークスペースの変形
複数のセッションを同時に開くことができます。たとえば、あるセッションでUnityアプリを実行し、別のセッションでHaply Hubを監視することができます。それぞれが同じ物理デバイスを参照していますが、独自の座標設定を持っています。
プロファイル名の設定
最初のメッセージでプロフィール名を設定することを強くお勧めします:
{
"session": {
"configure": {
"profile": {
"name": "co.mycompany.myapp:main-scene"
}
}
}
}
重要な理由:
- Haply Hub はプロファイル名に基づいてシミュレーションを識別し、その UI からデバイス設定(ワークスペース、基準、マウント、フィルター)を調整できるようにします。
- これらの調整は永続化されます。次に同じアプリを実行すると、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 リモート設定チュートリアル』を参照してください。