414 lines
5.9 KiB
Markdown
414 lines
5.9 KiB
Markdown
# 信令
|
||
|
||
## 信令格式
|
||
|
||
```
|
||
{
|
||
"header": {
|
||
"v": "版本",
|
||
"id": 请求标识,
|
||
"sn": "设备标识"
|
||
"pid": 信令标识,
|
||
},
|
||
"code": "响应编码",
|
||
"message": "响应描述",
|
||
"body": {
|
||
// 信令主体
|
||
}
|
||
}
|
||
```
|
||
|
||
### 符号解释
|
||
|
||
```
|
||
-> 单播:定向传播信令
|
||
-) 广播:广播信令(排除自己)
|
||
+) 全员广播:广播信令(包含自己)
|
||
```
|
||
|
||
## 平台信令(1000~1999)
|
||
|
||
### 关闭服务信令(1000)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
# 请求
|
||
{}
|
||
# 广播
|
||
{}
|
||
```
|
||
|
||
#### 消息流程:终端->服务端+)终端
|
||
|
||
全员广播[关闭服务信令](#关闭服务信令1000),然后关闭信令服务。
|
||
|
||
### 执行命令信令(1001)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
# 请求
|
||
{
|
||
"script": "命令"
|
||
}
|
||
# 响应
|
||
{
|
||
"result": "结果"
|
||
}
|
||
```
|
||
|
||
#### 消息流程:终端->服务端->终端
|
||
|
||
执行命令同时响应结果
|
||
|
||
### 异常信令(1999)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
{}
|
||
```
|
||
|
||
## 终端信令(2000~2999)
|
||
|
||
### 终端信息
|
||
|
||
### 终端注册信令(2000)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
# 请求
|
||
{
|
||
"username": "信令授权用户",
|
||
"password": "信令授权密码",
|
||
"ip": "IP地址",
|
||
"mac": "MAC地址",
|
||
"signal": "信号强度",
|
||
"battery": "电池电量"
|
||
}
|
||
# 响应
|
||
{}
|
||
# 广播
|
||
{
|
||
"sn": "终端标识",
|
||
"ip": "IP地址",
|
||
"mac": "MAC地址",
|
||
"signal": "信号强度",
|
||
"battery": "电池电量"
|
||
}
|
||
```
|
||
|
||
#### 消息流程:终端->服务端-)终端
|
||
|
||
终端注册成功以后响应同时[下发配置信令](#下发配置信令2004),并且广播[终端上线信令](#终端上线信令2002)。
|
||
|
||
### 终端关闭信令(2001)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
# 请求
|
||
{}
|
||
# 广播
|
||
{
|
||
"sn": "终端标识"
|
||
}
|
||
```
|
||
|
||
#### 消息流程:终端-)服务端
|
||
|
||
终端关闭以后广播[终端下线信令](#终端下线信令2003),同时释放所有相关资源(信令通道、媒体通道等等)
|
||
|
||
### 终端上线信令(2002)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
{
|
||
"sn": "终端标识"
|
||
}
|
||
```
|
||
|
||
#### 消息流程:服务端->终端
|
||
|
||
参考[终端注册信令](#终端注册信令2000)
|
||
|
||
### 终端下线信令(2003)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
{
|
||
"sn": "终端标识"
|
||
}
|
||
```
|
||
|
||
#### 消息流程:服务端->终端
|
||
|
||
参考[终端关闭信令](#终端关闭信令2001)
|
||
|
||
### 下发配置信令(2004)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
{
|
||
"time": "系统时间:yyyyMMddHHmmss",
|
||
"media": "媒体配置",
|
||
"webrtc": "WebRTC配置"
|
||
}
|
||
```
|
||
|
||
#### 消息流程:服务端->终端
|
||
|
||
参考[终端注册信令](#终端注册信令2000)
|
||
|
||
### 心跳信令(2005)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
# 请求
|
||
{
|
||
"signal": "信号强度",
|
||
"battery": "电池电量"
|
||
}
|
||
# 响应
|
||
{}
|
||
```
|
||
|
||
#### 消息流程:终端->服务端->终端
|
||
|
||
### 单播信令(2006)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
# 请求
|
||
{
|
||
"to": "接收终端标识",
|
||
// 主体信息
|
||
}
|
||
# 转发
|
||
{
|
||
// 主体信息
|
||
}
|
||
```
|
||
|
||
#### 消息流程:终端->服务端->终端
|
||
|
||
终端转发信令到指定的终端
|
||
|
||
### 广播信令(2007)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
# 请求
|
||
{
|
||
// 主体信息
|
||
}
|
||
# 广播
|
||
{
|
||
// 主体信息
|
||
}
|
||
```
|
||
|
||
#### 消息流程:终端->服务端-)终端
|
||
|
||
终端广播信令到所有的终端
|
||
|
||
### 重启终端信令(2997)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
# 请求
|
||
{
|
||
}
|
||
```
|
||
|
||
#### 消息流程:服务器->终端
|
||
|
||
重启终端
|
||
|
||
### 终端状态信令(2998)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
# 请求
|
||
{
|
||
"sn": "终端标识"
|
||
}
|
||
# 响应
|
||
{
|
||
"sn": "终端标识",
|
||
"ip": "IP地址",
|
||
"mac": "MAC地址",
|
||
"signal": "信号强度",
|
||
"battery": "电池电量"
|
||
}
|
||
```
|
||
|
||
#### 消息流程:终端->服务端->终端
|
||
|
||
响应指定终端状态(如果没有指定终端标识默认查询自己)
|
||
|
||
### 终端列表信令(2999)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
# 请求
|
||
{}
|
||
# 响应
|
||
[
|
||
{
|
||
"sn": "终端标识",
|
||
"ip": "IP地址",
|
||
"mac": "MAC地址",
|
||
"signal": "信号强度",
|
||
"battery": "电池电量"
|
||
},
|
||
...
|
||
]
|
||
```
|
||
|
||
#### 消息流程:终端->服务端->终端
|
||
|
||
响应所有终端状态列表
|
||
|
||
## 直播信令(3000~3999)
|
||
|
||
### 开启直播信令(3000)
|
||
|
||
### 关闭直播信令(3001)
|
||
|
||
### 直播广播信令(3002)
|
||
|
||
### 直播终端列表信令(3997)
|
||
|
||
### 直播状态信令(3998)
|
||
|
||
### 直播列表信令(3999)
|
||
|
||
## 会议信令(4000~4999)
|
||
|
||
### 创建会议信令(4000)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
{}
|
||
----
|
||
{
|
||
"id": "会议标识"
|
||
}
|
||
```
|
||
|
||
#### 消息流程:终端->服务端+)终端
|
||
|
||
### 关闭会议信令(4001)
|
||
|
||
释放资源、广播广播
|
||
|
||
### 进入会议信令(4002)
|
||
|
||
#### 消息主体
|
||
|
||
```
|
||
# 请求
|
||
{
|
||
"id": "会议标识"
|
||
}
|
||
# 广播
|
||
{
|
||
"id": "会议标识",
|
||
"sn": "终端标识"
|
||
}
|
||
```
|
||
|
||
#### 消息流程:终端->服务端-)终端
|
||
|
||
终端进入会议,广播通知其他终端。
|
||
|
||
### 离开会议信令(4003)
|
||
|
||
广播
|
||
|
||
### 邀请终端信令(4004)
|
||
|
||
邀请终端进入会议,终端确认进入发送进入会议信令。
|
||
|
||
### 踢出终端信令(4005)
|
||
|
||
广播
|
||
|
||
### 会议广播信令(4006)
|
||
|
||
### 会议终端列表信令(4997)
|
||
|
||
### 会议状态信令(4998)
|
||
|
||
### 会议列表信令(4999)
|
||
|
||
## 媒体信令(5000~5999)
|
||
|
||
### 发布信令(5000)
|
||
|
||
控制终端推流(服务端拉流)
|
||
|
||
### 取消发布指令(5001)
|
||
|
||
控制终端暂停推流(服务端取消拉流)
|
||
|
||
### 订阅指令(5002)
|
||
|
||
订阅终端媒体流(终端拉流)
|
||
|
||
### 取消订阅指令(5003)
|
||
|
||
取消订阅终端媒体流(终端取消拉流)
|
||
|
||
### 暂停信令(5004)
|
||
|
||
终端->服务端
|
||
暂停发布、订阅(不关媒体流通道)
|
||
Moon模式有效
|
||
|
||
### 恢复信令(5005)
|
||
|
||
终端->服务端
|
||
暂停发布、订阅(不关媒体流通道)
|
||
Moon模式有效
|
||
|
||
### 开启录像信令(5006)
|
||
|
||
### 停止录像信令(5007)
|
||
|
||
### 配置媒体信令(5008)
|
||
|
||
配置订阅媒体:码率、帧率、分辨率等等
|
||
|
||
### Offer信令(5997)
|
||
|
||
Offer
|
||
|
||
### Answer信令(5998)
|
||
|
||
Answer
|
||
|
||
### 候选信令(5999)
|
||
|
||
IceCandidate
|
||
|
||
## 测试
|
||
|
||
```
|
||
let socket = new WebSocket("wss://localhost:8888/websocket.signal");
|
||
socket.send('{"header":{"pid":2000,"v":"1.0.0","id":"1","sn":"taoyao"},"body":{"username":"taoyao","password":"taoyao"}}');
|
||
socket.send('{"header":{"pid":1000,"v":"1.0.0","id":"1","sn":"taoyao"},"body":{}}');
|
||
``` |