398 lines
6.3 KiB
Markdown
398 lines
6.3 KiB
Markdown
# 信令
|
||
|
||
## 信令格式
|
||
|
||
```
|
||
{
|
||
"header": {
|
||
"v": "版本",
|
||
"id": 请求标识,
|
||
"signal": "信令标识",
|
||
"clientId": "设备标识"
|
||
},
|
||
"code": "响应编码",
|
||
"message": "响应描述",
|
||
"body": {
|
||
// 信令主体
|
||
}
|
||
}
|
||
```
|
||
|
||
### 术语解释
|
||
|
||
```
|
||
请求:终端->信令服务 || 信令服务->媒体服务
|
||
响应:信令服务->终端 || 服务媒体->信令服务
|
||
广播:信令服务-)终端 || 信令服务+)终端
|
||
```
|
||
|
||
### 符号解释
|
||
|
||
```
|
||
-[消息类型]> 请求(单播):定向请求(单播)信令
|
||
-[消息类型]) 全员广播:对所有的终端广播信令(排除自己)
|
||
+[消息类型]) 全员广播:对所有的终端广播信令(包含自己)
|
||
```
|
||
|
||
> 注意:没有消息类型表示请求类型
|
||
|
||
## 终端信令
|
||
|
||
### 终端广播信令(client::broadcast)
|
||
|
||
```
|
||
# 请求主体
|
||
{
|
||
// 主体
|
||
}
|
||
# 广播主体
|
||
{
|
||
// 主体
|
||
}
|
||
# 消息流程:终端->信令服务-)终端
|
||
```
|
||
|
||
### 终端关闭信令(client::close)
|
||
|
||
```
|
||
# 请求主体
|
||
{
|
||
}
|
||
# 响应主体
|
||
{
|
||
}
|
||
# 消息流程:终端->信令服务->终端
|
||
# 消息流程:终端->信令服务-[终端下线])终端
|
||
```
|
||
|
||
### 终端配置信令(client::config)
|
||
|
||
```
|
||
# 响应主体
|
||
{
|
||
"time": "系统时间(yyyyMMddHHmmss)",
|
||
"media": "媒体配置",
|
||
"webrtc": "WebRTC配置"
|
||
}
|
||
# 消息流程:终端-[终端注册]>信令服务->终端
|
||
```
|
||
|
||
### 终端心跳信令(client::heartbeat)
|
||
|
||
```
|
||
# 请求主体
|
||
{
|
||
"signal": 信号强度(0~100),
|
||
"battery": 电池电量(0~100),
|
||
"charging": 是否充电(true|false)
|
||
}
|
||
# 响应主体
|
||
{
|
||
}
|
||
# 消息流程:终端->信令服务->终端
|
||
```
|
||
|
||
### 终端列表信令(client::list)
|
||
|
||
```
|
||
# 请求主体
|
||
{
|
||
}
|
||
# 响应主体
|
||
[
|
||
{
|
||
"clientId": "终端标识",
|
||
"ip": "终端IP",
|
||
"signal": 信号强度(0~100),
|
||
"battery": 电池电量(0~100),
|
||
"charging": 是否充电(true|false),
|
||
"mediaId": "媒体服务标识",
|
||
"lastHeartbeat": "最后心跳时间"
|
||
},
|
||
...
|
||
]
|
||
# 消息流程:终端->信令服务->终端
|
||
```
|
||
|
||
### 终端下线信令(client::offline)
|
||
|
||
```
|
||
# 广播主体
|
||
{
|
||
"clientId": "下线终端标识"
|
||
}
|
||
# 消息流程:终端-[终端关闭]>信令服务-)终端
|
||
```
|
||
|
||
### 终端上线信令(client::online)
|
||
|
||
```
|
||
# 广播主体
|
||
{
|
||
"clientId": "终端标识",
|
||
"ip": "终端IP",
|
||
"signal": 信号强度(0~100),
|
||
"battery": 电池电量(0~100),
|
||
"charging": 是否充电(true|false),
|
||
"mediaId": "媒体服务标识",
|
||
"lastHeartbeat": "最后心跳时间"
|
||
}
|
||
# 消息流程:终端-[终端注册]>信令服务-)终端
|
||
```
|
||
|
||
### 重启终端信令(client::reboot)
|
||
|
||
```
|
||
# 响应主体
|
||
{
|
||
}
|
||
# 消息流程:信令服务->终端
|
||
```
|
||
|
||
### 终端注册信令(client::register)
|
||
|
||
```
|
||
# 请求主体
|
||
{
|
||
"username": "信令用户",
|
||
"password": "信令密码",
|
||
"clientId": "终端标识",
|
||
"ip": "终端IP",
|
||
"signal": 信号强度(0~100),
|
||
"battery": 电池电量(0~100),
|
||
"charging": 是否充电(true|false)
|
||
}
|
||
# 响应主体
|
||
{
|
||
}
|
||
# 消息流程:终端->信令服务->终端
|
||
# 消息流程:终端->信令服务-[终端上线])终端
|
||
```
|
||
|
||
### 终端状态信令(client::status)
|
||
|
||
```
|
||
# 请求主体
|
||
{
|
||
"clientId": "终端标识"
|
||
}
|
||
# 响应主体
|
||
{
|
||
"clientId": "终端标识",
|
||
"ip": "终端IP",
|
||
"signal": 信号强度(0~100),
|
||
"battery": 电池电量(0~100),
|
||
"charging": 是否充电(true|false),
|
||
"mediaId": "媒体服务标识",
|
||
"lastHeartbeat": "最后心跳时间"
|
||
}
|
||
# 消息流程:终端->信令服务->终端
|
||
```
|
||
|
||
### 终端单播信令(client::unicast)
|
||
|
||
```
|
||
# 请求主体
|
||
{
|
||
"to": "接收终端标识",
|
||
// 主体信息
|
||
}
|
||
# 响应主体
|
||
{
|
||
// 主体信息
|
||
}
|
||
# 消息流程:终端->信令服务->终端
|
||
```
|
||
|
||
## 媒体服务信令
|
||
|
||
### 媒体服务列表信令(media::list)
|
||
|
||
```
|
||
# 请求主体:
|
||
{
|
||
}
|
||
# 响应主体:
|
||
[
|
||
{
|
||
"name": "名称",
|
||
"enabled": "是否启用",
|
||
"host": "主机",
|
||
"port": "端口",
|
||
"schema": "协议",
|
||
"address": "完整地址"
|
||
}
|
||
]
|
||
# 消息流程:终端->信令服务->终端
|
||
```
|
||
|
||
### 重启媒体服务信令(media::reboot)
|
||
|
||
```
|
||
# 请求主体:
|
||
{
|
||
}
|
||
# 响应主体:
|
||
{
|
||
}
|
||
# 消息流程:终端->信令服务+)终端
|
||
```
|
||
|
||
### 媒体服务注册信令(media::register)
|
||
|
||
```
|
||
# 请求主体:
|
||
{
|
||
"username": "媒体用户",
|
||
"password": "媒体密码"
|
||
}
|
||
# 响应主体:
|
||
{
|
||
}
|
||
# 消息流程:信令服务->媒体服务->信令服务
|
||
```
|
||
|
||
## 平台信令
|
||
|
||
### 异常信令(platform::error)
|
||
|
||
通知执行信令时发生的异常
|
||
|
||
```
|
||
# 响应主体:
|
||
{
|
||
}
|
||
# 消息流程:终端->信令服务->终端
|
||
```
|
||
|
||
### 关闭平台信令(platform::reboot)
|
||
|
||
```
|
||
# 请求主体:
|
||
{
|
||
}
|
||
# 广播主体:
|
||
{
|
||
}
|
||
# 消息流程:终端->信令服务+)终端
|
||
```
|
||
|
||
### 执行命令信令(platform::script)
|
||
|
||
```
|
||
# 请求主体
|
||
{
|
||
"script": "命令"
|
||
}
|
||
# 响应主体
|
||
{
|
||
"result": "结果"
|
||
}
|
||
# 消息流程:终端->服务端->终端
|
||
```
|
||
|
||
### 关闭平台信令(platform::shutdown)
|
||
|
||
```
|
||
# 请求主体:
|
||
{
|
||
}
|
||
# 广播主体:
|
||
{
|
||
}
|
||
# 消息流程:终端->信令服务+)终端
|
||
```
|
||
|
||
## 房间信令(4000~4999)
|
||
|
||
### 创建房间信令(4000)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
{}
|
||
----
|
||
{
|
||
"id": "房间标识"
|
||
}
|
||
```
|
||
|
||
#### 消息流程:终端->服务端+)终端
|
||
|
||
### 关闭房间信令(4001)
|
||
|
||
释放资源、广播广播
|
||
|
||
### 进入房间信令(4002)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
# 请求
|
||
{
|
||
"id": "房间标识"
|
||
}
|
||
# 广播
|
||
{
|
||
"id": "房间标识",
|
||
"clientId": "终端标识"
|
||
}
|
||
```
|
||
|
||
#### 消息流程:终端->服务端-)终端
|
||
|
||
终端进入房间,广播通知其他终端。
|
||
|
||
### 离开房间信令(4003)
|
||
|
||
广播
|
||
|
||
### 邀请终端信令(4004)
|
||
|
||
邀请终端进入房间,终端确认进入发送进入房间信令。
|
||
|
||
### 踢出终端信令(4005)
|
||
|
||
广播
|
||
|
||
### 房间广播信令(4006)
|
||
|
||
### 房间终端列表信令(4997)
|
||
|
||
### 房间状态信令(4998)
|
||
|
||
### 房间列表信令(4999)
|
||
|
||
## 系统信令
|
||
|
||
### 重启系统信令(system::reboot)
|
||
|
||
```
|
||
# 请求主体:
|
||
{
|
||
}
|
||
# 广播主体:
|
||
{
|
||
}
|
||
# 消息流程:终端->信令服务+)终端
|
||
```
|
||
|
||
### 关闭系统信令(system::shutdown)
|
||
|
||
```
|
||
# 请求主体:
|
||
{
|
||
}
|
||
# 广播主体:
|
||
{
|
||
}
|
||
# 消息流程:终端->信令服务+)终端
|
||
```
|
||
|
||
## 测试
|
||
|
||
```
|
||
let socket = new WebSocket("wss://localhost:8888/websocket.signal");
|
||
socket.send('{"header":{"signal":"client::register","v":"1.0.0","id":"1"},"body":{"username":"taoyao","password":"taoyao","clientId":"taoyao"}}');
|
||
socket.send('{"header":{"signal":"client::heartbeat","v":"1.0.0","id":"1"},"body":{}}');
|
||
``` |