跳转至正文

会话

什么是会话?​

当 WebSocket 客户端连接到 10001 端口时,系统会自动创建会话。一个连接对应一个会话。当连接关闭时,会话将被删除,相应的配置也会被废弃。

每个会话包含以下内容:

  • 数字ID(由服务自动分配)
  • 可选个人资料名称(自行设置)
  • 针对所有设备的独特视图:basis、mount、preset、filters、工作区转换

可以同时存在多个会话。例如,在一个会话中可以观察用户的 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 Remote Config 教程。