Files
taoyao/taoyao-signal-server/taoyao-signal/README.md
2023-02-17 07:07:56 +08:00

398 lines
6.3 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": 请求标识,
"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":{}}');
```