跳至主要内容

会话

什么是会话?​

当 WebSocket 客户端连接到端口 10001 时,系统会自动创建一个会话。一个连接对应一个会话。连接关闭时,该会话随即被销毁,其配置也会被丢弃。

每个会话包含:

  • 一个数字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 远程配置教程。