メインコンテンツへ移動

セッション

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

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

各セッションの内容は以下の通りです:

  • デジタルID(本サービスにより自動的に割り当てられるもの)
  • 任意のプロフィール名(ご自身で設定してください)
  • 各ツールの画面表示:基本設定、編集、プリセット、フィルター、ワークスペースの変換

複数のセッションが同時に存在することが可能です。たとえば、あるセッションではUnityアプリケーションが実行され、別のセッションではHaply Hubが監視を行っているといった具合です。それぞれのセッションは同じ物理デバイスを認識しますが、 座標設定はそれぞれ異なります。

プロフィール名を設定する​

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

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

なぜそれが重要なのか:

  • Haply 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チュートリアルをご覧ください。