セッション
セッションとは何ですか?
セッションは、WebSocketクライアントがポート10001に接続すると自動的に作成されます。1つの接続が1つのセッションに相当します。接続が切断されると、セッションは削除され、その設定も破棄されます。
各セッションには、以下の内容が含まれます:
- 番号ID(サービスによって自動的に割り当てられる)
- 任意のプロフィール名(手動設定)
- すべてのデバイスに対する固有のビュー:basis、mount、preset、filters、ワークスペース変換
複数のセッションを同時に開くことができます。たとえば、あるセッションではユーザーの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 Remote Config チュートリアルを参照してください。