Files
taoyao/taoyao-signal/README.md
2022-12-03 14:02:11 +08:00

414 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 信令
## 信令格式
```
{
"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
WebRTC信令`Offer`
### Answer信令5998
WebRTC信令`Answer`
### 候选信令5999
WebRTC信令`IceCandidate`主要用来解决`NAT`问题
## 测试
```
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":{}}');
```