会話
セッションとは何ですか?
この WebSocket クライアントがポート 10001 に接続すると、自動的にセッションが作成されます。1 つの接続につき 1 つのセッションが対応します。接続が切断されると、そのセッションは直ちに破棄され、その設定も破棄されます。
各セッションには以下が含まれます:
- 1つの数字ID(サービスによって自動的に割り当てられる)
- 任意の設定名(ユーザーが設定)
- 各デバイスごとの独立したビュー:基準、マウント、プリセット、フィルター、ワークスペース変換
複数のセッションが同時に存在することが可能です。たとえば、Unity アプリケーションが 1 つのセッションを使用している一方で、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 リモート設定のチュートリアルを参照してください。