メインコンテンツまでスキップ

セッション

セッションとは​

セッションは、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 リモート設定チュートリアル を参照してください。