支持中心/SDK 与 API 文档

会话

什么是会话?

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

每节课包含:

  • 一个数字标识符(由服务自动分配)
  • 可选的配置文件名称(由您设置)
  • 每个设备的专属视图:基础设置、安装、预设、滤镜和工作区变换

多个会话可以同时存在——例如,一个会话中运行您的 Unity 应用,另一个会话中运行Haply Hub 观察程序。它们各自看到的是同一台物理设备,但各自使用其 自身的坐标设置。

设置个人资料名称

强烈建议您在第一条消息中设置个人资料名称:

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

              

为什么这很重要:

  • Haply 会根据配置文件名称识别您的仿真,并允许您通过其用户界面调整设备设置(工作区、基函数、挂载、滤波器)。
  • 这些调整会被保存下来——下次运行同一款应用时,Hub 会自动重新应用这些调整,而无需您修改任何代码。
  • 其他会话(或 HTTP 客户端)可以通过配置文件名称来定位您的会话, 使用一个 会话选择器: ?session=myapp:0. 配置文件选择器还支持 * / ? 通配符,因此像这样的命名空间 ?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 控制的完整示例。