[+] 事件定义

This commit is contained in:
acgist
2022-11-17 09:01:12 +08:00
parent 9a77454255
commit 76d8780040
40 changed files with 220 additions and 67 deletions

View File

@@ -1,6 +1,6 @@
# 信令
## 信令
## 信令格式
```
{
@@ -114,25 +114,7 @@
}
```
### 终端列表信令2006
返回所有终端状态列表
```
{}
```
### 终端状态信令2007
返回指定终端状态(如果没有指定终端标识默认查询自己)
```
{
"sn": "终端标识"
}
```
### 单播信令2008
### 单播信令2006
发送到指定的终端:删除`to`字段
@@ -143,7 +125,7 @@
}
```
### 广播信令2009
### 广播信令2007
发送到所有的终端:排除自己
@@ -153,20 +135,42 @@
}
```
## 直播信令3000~3999
### 终端状态信令2998
返回指定终端状态(如果没有指定终端标识默认查询自己)
```
创建会议 -> 邀请终端|踢出终端|加入会议|离开会议 -> 光比会议
{
"sn": "终端标识"
}
```
### 终端列表信令2999
返回所有终端状态列表
```
{}
```
## 直播信令3000~3999
### 开启直播信令3000
### 关闭直播信令3001
### 直播终端列表信令3002
### 直播终端列表信令3997
### 直播状态信令3998
### 直播列表信令3999
## 会议信令4000~4999
```
创建会议 -> 邀请终端|踢出终端|加入会议|离开会议 -> 关闭会议
```
### 创建会议信令4000
### 关闭会议信令4001
@@ -189,7 +193,11 @@
广播
### 会议终端列表信令4006
### 会议终端列表信令4997
### 会议状态信令4998
### 会议列表信令4999
## 媒体信令5000~5999

View File

@@ -107,6 +107,16 @@ public class ClientSessionManager {
.findFirst()
.orElse(null);
}
/**
* @param sn 终端标识
*
* @return 终端状态
*/
public ClientSessionStatus status(String sn) {
final ClientSession session = this.session(sn);
return session == null ? null : session.status();
}
/**
* @return 所有终端会话

View File

@@ -2,6 +2,7 @@ package com.acgist.taoyao.signal.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -30,4 +31,10 @@ public class ClientController {
return Message.success(this.clientSessionManager.status());
}
@Operation(summary = "终端状态", description = "终端状态")
@GetMapping("/status/{sn}")
public Message status(@PathVariable String sn) {
return Message.success(this.clientSessionManager.status(sn));
}
}

View File

@@ -10,7 +10,7 @@ import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.client.ClientSession;
import com.acgist.taoyao.signal.event.client.CloseEvent;
import com.acgist.taoyao.signal.listener.ApplicationListenerAdapter;
import com.acgist.taoyao.signal.protocol.client.OfflineProtocol;
import com.acgist.taoyao.signal.protocol.client.ClientOfflineProtocol;
import lombok.extern.slf4j.Slf4j;
@@ -24,7 +24,7 @@ import lombok.extern.slf4j.Slf4j;
public class CloseListener extends ApplicationListenerAdapter<CloseEvent> {
@Autowired
private OfflineProtocol offlineProtocol;
private ClientOfflineProtocol offlineProtocol;
@Override
public void onApplicationEvent(CloseEvent event) {

View File

@@ -10,8 +10,8 @@ import com.acgist.taoyao.signal.client.ClientSession;
import com.acgist.taoyao.signal.client.ClientSessionStatus;
import com.acgist.taoyao.signal.event.client.RegisterEvent;
import com.acgist.taoyao.signal.listener.ApplicationListenerAdapter;
import com.acgist.taoyao.signal.protocol.client.ConfigProtocol;
import com.acgist.taoyao.signal.protocol.client.OnlineProtocol;
import com.acgist.taoyao.signal.protocol.client.ClientConfigProtocol;
import com.acgist.taoyao.signal.protocol.client.ClientOnlineProtocol;
/**
* 注册监听
@@ -22,9 +22,9 @@ import com.acgist.taoyao.signal.protocol.client.OnlineProtocol;
public class RegisterListener extends ApplicationListenerAdapter<RegisterEvent> {
@Autowired
private ConfigProtocol configProtocol;
private ClientConfigProtocol configProtocol;
@Autowired
private OnlineProtocol onlineProtocol;
private ClientOnlineProtocol onlineProtocol;
@Async
@Override

View File

@@ -16,7 +16,7 @@ import com.acgist.taoyao.boot.model.MessageCodeException;
import com.acgist.taoyao.boot.utils.JSONUtils;
import com.acgist.taoyao.signal.client.ClientSession;
import com.acgist.taoyao.signal.client.ClientSessionManager;
import com.acgist.taoyao.signal.protocol.client.RegisterProtocol;
import com.acgist.taoyao.signal.protocol.client.ClientRegisterProtocol;
import com.acgist.taoyao.signal.protocol.platform.ErrorProtocol;
import lombok.extern.slf4j.Slf4j;
@@ -95,7 +95,7 @@ public class ProtocolManager {
return;
}
final ClientSession session = this.clientSessionManager.session(instance);
if(protocol instanceof RegisterProtocol) {
if(protocol instanceof ClientRegisterProtocol) {
protocol.execute(sn, value, session);
} else if(session.authorized() && sn.equals(session.sn())) {
protocol.execute(sn, value, session);

View File

@@ -14,14 +14,14 @@ import com.acgist.taoyao.signal.protocol.ProtocolAdapter;
* @author acgist
*/
@Component
public class BroadcastProtocol extends ProtocolAdapter {
public class ClientBroadcastProtocol extends ProtocolAdapter {
public static final Integer PID = 2009;
public static final Integer PID = 2007;
@Autowired
private ClientSessionManager clientSessionManager;
public BroadcastProtocol() {
public ClientBroadcastProtocol() {
super(PID, "广播信令");
}

View File

@@ -15,11 +15,11 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
@Component
public class CloseProtocol extends ProtocolAdapter {
public class ClientCloseProtocol extends ProtocolAdapter {
public static final Integer PID = 2001;
public CloseProtocol() {
public ClientCloseProtocol() {
super(PID, "关闭信令");
}

View File

@@ -20,7 +20,7 @@ import com.acgist.taoyao.signal.protocol.ProtocolAdapter;
* @author acgist
*/
@Component
public class ConfigProtocol extends ProtocolAdapter {
public class ClientConfigProtocol extends ProtocolAdapter {
public static final Integer PID = 2004;
@@ -29,7 +29,7 @@ public class ConfigProtocol extends ProtocolAdapter {
@Autowired
private WebrtcProperties webrtcProperties;
public ConfigProtocol() {
public ClientConfigProtocol() {
super(PID, "信令协议标识");
}

View File

@@ -16,11 +16,11 @@ import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter;
* @author acgist
*/
@Component
public class HeartbeatProtocol extends ProtocolMapAdapter {
public class ClientHeartbeatProtocol extends ProtocolMapAdapter {
public static final Integer PID = 2005;
public HeartbeatProtocol() {
public ClientHeartbeatProtocol() {
super(PID, "心跳信令");
}

View File

@@ -14,14 +14,14 @@ import com.acgist.taoyao.signal.protocol.ProtocolAdapter;
* @author acgist
*/
@Component
public class ListProtocol extends ProtocolAdapter {
public class ClientListProtocol extends ProtocolAdapter {
public static final Integer PID = 2006;
public static final Integer PID = 2999;
@Autowired
private ClientSessionManager clientSessionManager;
public ListProtocol() {
public ClientListProtocol() {
super(PID, "终端列表信令");
}

View File

@@ -12,11 +12,11 @@ import com.acgist.taoyao.signal.protocol.ProtocolAdapter;
* @author acgist
*/
@Component
public class OfflineProtocol extends ProtocolAdapter {
public class ClientOfflineProtocol extends ProtocolAdapter {
public static final Integer PID = 2003;
public OfflineProtocol() {
public ClientOfflineProtocol() {
super(PID, "终端下线信令");
}

View File

@@ -12,11 +12,11 @@ import com.acgist.taoyao.signal.protocol.ProtocolAdapter;
* @author acgist
*/
@Component
public class OnlineProtocol extends ProtocolAdapter {
public class ClientOnlineProtocol extends ProtocolAdapter {
public static final Integer PID = 2002;
public OnlineProtocol() {
public ClientOnlineProtocol() {
super(PID, "上线信令");
}

View File

@@ -19,14 +19,14 @@ import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter;
* @author acgist
*/
@Component
public class RegisterProtocol extends ProtocolMapAdapter {
public class ClientRegisterProtocol extends ProtocolMapAdapter {
public static final Integer PID = 2000;
@Autowired
private SecurityProperties securityProperties;
public RegisterProtocol() {
public ClientRegisterProtocol() {
super(PID, "注册信令");
}

View File

@@ -11,23 +11,20 @@ import com.acgist.taoyao.signal.client.ClientSession;
import com.acgist.taoyao.signal.client.ClientSessionManager;
import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter;
import lombok.extern.slf4j.Slf4j;
/**
* 终端状态信令
*
* @author acgist
*/
@Slf4j
@Component
public class StatusProtocol extends ProtocolMapAdapter {
public class ClientStatusProtocol extends ProtocolMapAdapter {
public static final Integer PID = 2007;
public static final Integer PID = 2998;
@Autowired
private ClientSessionManager clientSessionManager;
public StatusProtocol() {
public ClientStatusProtocol() {
super(PID, "终端状态信令");
}
@@ -38,13 +35,8 @@ public class StatusProtocol extends ProtocolMapAdapter {
if(StringUtils.isEmpty(querySn)) {
querySn = sn;
}
final ClientSession clientSession = this.clientSessionManager.session(querySn);
if(clientSession != null) {
message.setBody(clientSession.status());
session.push(message);
} else {
log.warn("终端无效:{}", querySn);
}
message.setBody(this.clientSessionManager.status(querySn));
session.push(message);
}
}

View File

@@ -20,14 +20,14 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
@Component
public class UnicastProtocol extends ProtocolMapAdapter {
public class ClientUnicastProtocol extends ProtocolMapAdapter {
public static final Integer PID = 2008;
public static final Integer PID = 2006;
@Autowired
private ClientSessionManager clientSessionManager;
public UnicastProtocol() {
public ClientUnicastProtocol() {
super(PID, "单播信令");
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.live;
public class LiveClientListProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.live;
public class LiveCloseProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.live;
public class LiveListProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.live;
public class LiveRegisterProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.live;
public class LiveStatusProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.media;
public class MediaPauseProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.media;
public class MediaPublishProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.media;
public class MediaResumeProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.media;
public class MediaStartRecordProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.media;
public class MediaStopRecordProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.media;
public class MediaSubscribeProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.media;
public class MediaUnpublishProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.media;
public class MediaUnsubscribeProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.meeting;
public class MeetingClientListProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.meeting;
public class MeetingCloseProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.meeting;
public class MeetingEnterProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.meeting;
public class MeetingExpelProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.meeting;
public class MeetingInviteProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.meeting;
public class MeetingLeaveProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.meeting;
public class MeetingListProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.meeting;
public class MeetingRegisterProtocol {
}

View File

@@ -0,0 +1,5 @@
package com.acgist.taoyao.signal.protocol.meeting;
public class MeetingStatusProtocol {
}