本文へスキップ
バージョン: 3.5.x

セッション

セッションとは何ですか?

WebSocketクライアントがポート 10001に接続すると、セッションが自動的に作成されます。1つの接続につき1つのセッションとなります。接続が切断されると、セッションは 破棄され、その設定も削除されます。

各セッションには以下の内容が含まれます:

  • 一意のID(サービスによって自動的に割り当てられる)
  • プロファイル名(任意、設定はユーザー側で行います)
  • 各デバイスごとのビュー:ベース、マウント、プリセット、フィルター、ワークスペース変換

複数のセッションを同時に実行できます。たとえば、あるセッションでUnityアプリを実行し、別のセッションでHaply Hubによる監視を行うといった具合です。各セッションは同じ物理デバイスを認識しますが、それぞれ独自の 座標設定が適用されます。

プロフィール名の設定

最初のメッセージでプロフィール名を設定することを強くお勧めします:

{
"session": {
"configure": {
"profile": {
"name": "co.mycompany.myapp:main-scene"
}
}
}
}

なぜ重要なのか:

  • Haply プロファイル名を使用してシミュレーションを識別し、UIから デバイス設定(ワークスペース、基底関数、マウント、フィルター)を調整できるようにします。
  • これらの調整内容は保存されます。次回同じアプリを実行する際、Hubは ユーザー側でコードを変更することなく、自動的にそれらを再適用します。
  • 他のセッション(またはHTTPクライアント)は、プロファイル名を使用して あなたのセッションを特定できます セッションセレクタ: ?session=myapp:0. プロファイルセレクタは、以下の形式も受け付けます * / ? globワイルドカードのため、次のような名前空間 ?session=co.haply.hub::*:0 プロファイルの全容を知らなくても動作します。

リモートコントロール(セッション間設定)

セッションのデバイスは、外部から再設定することができます。具体的には、別のWebSocket セッションから、あるいはWebSocket接続を一切持たないHTTPクライアントから設定可能です。Haply 、この方法で アプリの設定を調整します。

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リモートコンフィグのチュートリアルをご覧ください。