跳转至主要内容

会议

什么是会话?​

当 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 远程配置教程。