跳转至主要内容

会话

什么是会话?​

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

每节课包括:

  • 一个数字标识符(由该服务自动分配)
  • 可选的个人资料名称(由您自行设定)
  • 每台设备的独立视图:基础设置、安装、预设、滤镜和工作区转换

可以同时存在多个会话,例如,一个会话中运行您的 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 控制示例。