WS请求规则
ws请求地址为
/ws/{userCode},用户登录后执行ws的open操作,打开ws链接
WS推送类型
| 类型名称 | 类型编码 | 说明 |
|---|---|---|
| 控制操作 | CONTROL | 启动、停止等操作 |
| 用户在线 | ONLINE | 用户在线状态 |
| 用户离线 | OFFLINE | 用户离线状态 |
| 日志 | LOG | 发送给教员的日志信息 |
| 操作同步 | SYNC | 多人协作时同步操作给其他人员 |
登录操作接口交互过程
- 前端登录后open ws。
- 后端登陆后绑定当前登陆人与登录IP的对应关系(缓存)
日志存储格式定义(数据库设计参考)
| 列明 | 类型 | 说明 |
|---|---|---|
| ID | 主键 | |
| LOG_TYPE | VARCHAR | 日志类型 |
| LOG_DESC | VARCHAR | 日志描述,主要用于给前端显示使用 |
| VR_CLASSROOM_ID | VARCHAR | 虚拟教室id |
| S_USER | VARCHAR | |
| S_ATIME | DATETIME | |
| CREATE_DATE | DATE | 创建日期,如有统计可以使用 |
日志类型
| 日志编码 | 说明 |
|---|---|
| LOG-101 | 教员启用整个教室的操作 |
| LOG-102 | 教员启用某个学员的操作 |
| LOG-103 | 教员暂停整个教室的操作 |
| LOG-104 | 教员暂停某个学员的操作 |
| LOG-105 | 教员终止整个教室的操作 |
| LOG-106 | 教员终止某个学员的操作 |
| LOG-201 | 进入教室 |
| LOG-202 | 离开教室 |
| LOG-301 | 下发推送计划 |
| LOG-401 | 学员操作日志 |
| LOG-402 | 训练结束 |
教员启用、暂停、终止操作
- 教员调用后端接口暂停、启用整个教室。service接口调用,基本参数不列出,只列出特殊参数信息
启用操作前端发送数据到后端
{ 'LOG_TYPE':'LOG-101', 'VR_CLASSROOM_ID':'' }启用操作后端发送ws消息给教室创建人
{ 'LOG_TIME':'2025-07-29 12:12:12', 'LOG_DESC':'xxx 暂停教室所有人操作' }启用操作后端发送ws消息给教室所有学员
{ 'TYPE':'CONTROL', 'OPT':'START' }暂停操作前端发送数据到后端
{ 'LOG_TYPE':'LOG-103', 'VR_CLASSROOM_ID':'id' }暂停操作后端发送ws消息给教室创建人
{ 'LOG_TIME':'2025-07-29 12:12:12', 'LOG_DESC':'xxx 恢复教室所有人操作' }暂停操作后端发送ws消息给教室所有学员
{ 'TYPE':'CONTROL', 'OPT':'STOP' }2.教员调用后端接口暂停、启用单个学员。service接口调用,基本参数不列出,只列出特殊参数信息 启用操作前端发送数据到后端
{ 'LOG_TYPE':'LOG-102', 'VR_CLASSROOM_ID':'id', 'USER_CODE':'学员code' }启用操作后端发送ws消息给教室创建人
{ 'LOG_TIME':'2025-07-29 12:12:12', 'LOG_DESC':'xxx 暂停学员xxx操作' }启用操作后端发送ws消息给学员
{ 'TYPE':'CONTROL', 'OPT':'START' }暂停操作前端发送数据到后端
{ 'LOG_TYPE':'LOG-104', 'VR_CLASSROOM_ID':'id', 'USER_CODE':'学员code' }暂停操作后端发送ws消息给教室创建人
{ 'LOG_TIME':'2025-07-29 12:12:12', 'LOG_DESC':'xxx 恢复学员xxx操作' } `暂停 *启用操作后端发送ws消息给学员* ```javascript { 'TYPE':'CONTROL', 'OPT':'STOP' }3.教员调用后端接口终止整个教室操作。service接口调用,基本参数不列出,只列出特殊参数信息 终止操作前端发送数据到后端
{ 'LOG_TYPE':'LOG-105', 'VR_CLASSROOM_ID':'id' }终止操作后端发送ws消息给教室创建人
{ 'TYPE':'LOG', 'LOG_TIME':'2025-07-29 12:12:12', 'LOG_DESC':'xxx 终止教室xxx所有人操作' }终止操作后端发送ws消息给教室所有学员
{ 'TYPE':'CONTROL', 'OPT':'TERMINATE' }4.教员调用后端接口终止某个学员操作。service接口调用,基本参数不列出,只列出特殊参数信息 终止操作前端发送数据到后端
{ 'LOG_TYPE':'LOG-106', 'VR_CLASSROOM_ID':'id', 'USER_CODE':'学员code' }终止操作后端发送ws消息给教室创建人
{ 'TYPE':'LOG', 'LOG_TIME':'2025-07-29 12:12:12', 'LOG_DESC':'xxx 终止学员xxx操作' }终止操作后端发送ws消息给学员
{ 'TYPE':'CONTROL', 'OPT':'TERMINATE' }进入教室
- 前端调用后端接口告知用户进入教室,后端收到消息发送ws消息给前端教室创建人。前端调用接口参数,通用的service调用,基本参数此处不列出,只列出特殊参数信息。
{ 'LOG_TYPE':'LOG-201', 'VR_CLASSROOM_ID':'id' } - 后端存储进入教室的日志数据,并发送ws消息给教室创建人。
{ 'TYPE':'LOG', 'LOG_TIME':'2025-07-29 12:12:12', 'LOG_DESC':'XXX进入教室' } - 推送人员加入信息给前端,前端根据此消息更改人员状态
{ 'TYPE':'ONLINE', 'IP':'学员登录IP' }
离开教室
1.离开教室,前端发送消息到后端,后端记录日志,并发送ws消息给教室创建人。通用的service调用,基本参数此处不列出,只列出特殊参数信息。
{
'LOG_TYPE':'LOG-202',
'VR_CLASSROOM_ID':'id'
}
- 后端存储离开教室的日志数据,并发送ws消息给教室创建人。
{ 'TYPE':'LOG', 'LOG_TIME':'2025-07-29 12:12:12', 'LOG_DESC':'XXX离开教室' } - 推送人员退出消息给前端,前端根据此消息更改人员状态
{ 'TYPE':'OFFLINE', 'IP':'学员登录IP' }下发训练计划
- 教员下发训练计划,调用后端接口,后端记录日志,并推送ws消息将训练计划id给3d
前端调用后端接口,接口数据
{ 'VR_CLASSROOM_ID':'id', 'LOG_TYPE':'LOG-301' }后端存储日志,发送日志消息给教室创建人
{ 'TYPE':'LOG', 'LOG_TIME':'2025-07-29 12:12:12', 'LOG_DESC':'XXX下发训练计划' }后端,发送训练计划id给房间内学员
{ 'TRAINING_PLAN_ID':'id' }
学员操作日志(不包括训练的最后一步操作)
学员提交操作记录日志到后端,通用service方法。参数目前只是演示,实际参数可能有区别,要根据实际3d传过来的数据为准。
前端提交到后端的参数(http) demo
{ 'VR_CLASSROOM_ID':'虚拟教室id', 'SUBJECT_ID':'训练科目id', 'STEP':'', 'LOG_TYPE':'LOG-401' }后端根据教室id,查询教室的训练类型是单人还是多人,然后根据不同类型进行不同操作
- 如果是单人训练
- 保存操作记录到日志表并发送给教室创建人(待确认是否需要把学员操作记录输出到教室创建处)
{ 'TYPE':'LOG', 'LOG_TIME':'2025-07-29 12:12:12', 'LOG_DESC':'xxx学员操作***' } - 保存操作记录到成绩明细表,并记录分值
- 如果是多人协同
- 保存操作记录到日志,并发送给创建人(待确认是否需要把学员操作记录输出到教室创建处)
{ 'TYPE':'LOG', 'LOG_TIME':'2025-07-29 12:12:12', 'LOG_DESC':'xxx学员操作***' } - 操作人操作步骤同步到同教室其他人员ws消息发送(数据格式为json字符串,具体内容目前需要3d前端确认,但消息中一定会包含type字段,便于前端做判断处理)
{ 'TYPE':'SYNC', '一些参数':'' }
学员提交操作完成操作(会计算本次训练成绩)
- 前端提交数据到后端(http)
前端提交到后端的参数(http) demo
{ 'VR_CLASSROOM_ID':'虚拟教室id', 'SUBJECT_ID':'训练科目id', 'STEP':'', 'LOG_TYPE':'LOG-402' }后端结算本次科目训练,并计算成绩,存储到成绩表中,方便后面查看(多人存储多参与的每个人成绩)。同时会以ws的方法推送数据到相关的人。(单人推送一份,多人推送多份)
{ 'TYPE':'RESULT', 'SCORE':'', 'DETAIL':[每一次操作记录及结果] }
后端提供HTTP接口一览表
| 接口描述 | 接口路径 | 说明 |
|---|---|---|
| 根据训练方案获取训练科目列表 | 暂无 | |
| 操作日志相关操作 | /receiveLog | 日志相关的所有操作,前端发送的操作中包含LOG_TYPE的都走这个接口。 |
| 根据单人还是多人筛选训练科目 | 动态字典 |