[*] 会议

This commit is contained in:
acgist
2022-11-20 14:10:20 +08:00
parent f900bbb998
commit cf476b842b
14 changed files with 274 additions and 70 deletions

View File

@@ -102,7 +102,7 @@
#### 消息流程:终端->服务端-)终端
终端注册成功响应同时[下发配置信令](#下发配置信令2004),并且广播[终端上线信令](#终端上线信令2002)。
终端注册成功以后响应同时[下发配置信令](#下发配置信令2004),并且广播[终端上线信令](#终端上线信令2002)。
### 终端关闭信令2001
@@ -119,11 +119,11 @@
#### 消息流程:终端-)服务端
广播[终端下线信令](#终端下线信令2003),同时释放所有相关资源(信令通道、媒体通道等等)
终端关闭以后广播[终端下线信令](#终端下线信令2003),同时释放所有相关资源(信令通道、媒体通道等等)
### 终端上线信令2002
服务端->终端:参考[终端注册信令](#终端注册信令)
#### 消息主体
```
{
@@ -131,9 +131,13 @@
}
```
#### 消息流程:服务端->终端
参考[终端注册信令](#终端注册信令2000)
### 终端下线信令2003
服务端->终端:参考[终端关闭信令](#关闭信令)
#### 消息主体
```
{
@@ -141,9 +145,13 @@
}
```
#### 消息流程:服务端->终端
参考[终端关闭信令](#终端关闭信令2001)
### 下发配置信令2004
服务端->终端:参考[注册信令](#注册信令)
#### 消息主体
```
{
@@ -153,56 +161,112 @@
}
```
#### 消息流程:服务端->终端
参考[终端注册信令](#终端注册信令2000)
### 心跳信令2005
心跳:响应
#### 消息主体
```
# 请求
{
"signal": "信号强度",
"battery": "电池电量"
}
# 响应
{}
```
#### 消息流程:终端->服务端->终端
### 单播信令2006
#### 消息主体
```
# 请求
{
"to": "接收终端标识",
// 主体信息
}
# 转发
{
// 主体信息
}
```
#### 消息流程:终端->服务端->终端
终端转发信令到指定的终端
### 广播信令2007
#### 消息主体
```
# 请求
{
// 主体信息
}
# 广播
{
// 主体信息
}
```
#### 消息流程:终端->服务端-)终端
终端广播信令到所有的终端
### 终端状态信令2998
#### 消息主体
```
# 请求
{
"sn": "终端标识"
}
# 响应
{
"sn": "终端标识",
"ip": "IP地址",
"mac": "MAC地址",
"signal": "信号强度",
"battery": "电池电量"
}
```
### 单播信令2006
#### 消息流程:终端->服务端->终端
发送到指定终端:删除`to`字段
```
{
"to": "接收终端标识",
// 主体信息
}
```
### 广播信令2007
发送到所有的终端:排除自己
```
{
// 主体信息
}
```
### 终端状态信令2998
返回指定终端状态(如果没有指定终端标识默认查询自己)
```
{
"sn": "终端标识"
}
```
响应指定终端状态(如果没有指定终端标识默认查询自己)
### 终端列表信令2999
返回所有终端状态列表
#### 消息主体
```
# 请求
{}
# 响应
[
{
"sn": "终端标识",
"ip": "IP地址",
"mac": "MAC地址",
"signal": "信号强度",
"battery": "电池电量"
},
...
]
```
#### 消息流程:终端->服务端->终端
响应所有终端状态列表
## 直播信令3000~3999
### 开启直播信令3000
@@ -225,7 +289,7 @@
{}
----
{
"id": "会议标识"
"id": "会议标识",
}
```
@@ -237,7 +301,23 @@
### 进入会议信令4002
广播
#### 消息主体
```
# 请求
{
"id": "会议标识"
}
# 广播
{
"id": "会议标识",
"sn": "终端标识"
}
```
#### 消息流程:终端->服务端-)终端
终端进入会议,广播通知其他终端。
### 离开会议信令4003

View File

@@ -0,0 +1,22 @@
package com.acgist.taoyao.signal.event.meeting;
import java.util.Map;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.client.ClientSession;
import com.acgist.taoyao.signal.event.ApplicationEventAdapter;
/**
* 进入会议事件
*
* @author acgist
*/
public class MeetingEnterEvent extends ApplicationEventAdapter {
private static final long serialVersionUID = 1L;
public MeetingEnterEvent(Map<?, ?> body, Message message, ClientSession session) {
super(body, message, session);
}
}

View File

@@ -16,6 +16,8 @@ import com.acgist.taoyao.signal.protocol.client.ClientOnlineProtocol;
/**
* 终端注册监听
*
* TODO如果已经在会议、直播中自动推流。
*
* @author acgist
*/
@Component

View File

@@ -26,7 +26,7 @@ public class ClientHeartbeatProtocol extends ProtocolMapAdapter {
@Override
public void execute(String sn, Map<?, ?> body, Message message, ClientSession session) {
// 应心跳
// 应心跳
session.push(message.cloneWidthoutBody());
// 设置状态
final ClientSessionStatus status = session.status();

View File

@@ -1,5 +1,31 @@
package com.acgist.taoyao.signal.protocol.meeting;
public class MeetingEnterProtocol {
import java.util.Map;
import org.springframework.stereotype.Component;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.client.ClientSession;
import com.acgist.taoyao.signal.event.meeting.MeetingEnterEvent;
import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter;
/**
* 进入会议信令
*
* @author acgist
*/
@Component
public class MeetingEnterProtocol extends ProtocolMapAdapter {
public static final Integer PID = 4002;
public MeetingEnterProtocol() {
super(PID, "进入会议信令");
}
@Override
public void execute(String sn, Map<?, ?> body, Message message, ClientSession session) {
this.publishEvent(new MeetingEnterEvent(body, message, session));
}
}