[+] 事件定义

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,7 @@
package com.acgist.taoyao.live.controller; package com.acgist.taoyao.live.controller;
import org.springframework.web.bind.annotation.GetMapping; 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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -30,4 +31,16 @@ public class LiveController {
return Message.success(); return Message.success();
} }
@Operation(summary = "直播状态", description = "直播状态")
@GetMapping("/status/{id}")
public Message status(@PathVariable String id) {
return Message.success();
}
@Operation(summary = "直播终端列表", description = "直播终端列表")
@GetMapping("/list/client")
public Message listClient() {
return Message.success();
}
} }

View File

@@ -1,6 +1,7 @@
package com.acgist.taoyao.meeting.controller; package com.acgist.taoyao.meeting.controller;
import org.springframework.web.bind.annotation.GetMapping; 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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -30,4 +31,16 @@ public class MeetingController {
return Message.success(); return Message.success();
} }
@Operation(summary = "会议状态", description = "会议状态")
@GetMapping("/status/{id}")
public Message status(@PathVariable String id) {
return Message.success();
}
@Operation(summary = "会议终端列表", description = "会议终端列表")
@GetMapping("/list/client")
public Message listClient() {
return Message.success();
}
} }

View File

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

View File

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

View File

@@ -2,6 +2,7 @@ package com.acgist.taoyao.signal.controller;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; 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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -30,4 +31,10 @@ public class ClientController {
return Message.success(this.clientSessionManager.status()); 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.client.ClientSession;
import com.acgist.taoyao.signal.event.client.CloseEvent; import com.acgist.taoyao.signal.event.client.CloseEvent;
import com.acgist.taoyao.signal.listener.ApplicationListenerAdapter; 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; import lombok.extern.slf4j.Slf4j;
@@ -24,7 +24,7 @@ import lombok.extern.slf4j.Slf4j;
public class CloseListener extends ApplicationListenerAdapter<CloseEvent> { public class CloseListener extends ApplicationListenerAdapter<CloseEvent> {
@Autowired @Autowired
private OfflineProtocol offlineProtocol; private ClientOfflineProtocol offlineProtocol;
@Override @Override
public void onApplicationEvent(CloseEvent event) { 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.client.ClientSessionStatus;
import com.acgist.taoyao.signal.event.client.RegisterEvent; import com.acgist.taoyao.signal.event.client.RegisterEvent;
import com.acgist.taoyao.signal.listener.ApplicationListenerAdapter; import com.acgist.taoyao.signal.listener.ApplicationListenerAdapter;
import com.acgist.taoyao.signal.protocol.client.ConfigProtocol; import com.acgist.taoyao.signal.protocol.client.ClientConfigProtocol;
import com.acgist.taoyao.signal.protocol.client.OnlineProtocol; 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> { public class RegisterListener extends ApplicationListenerAdapter<RegisterEvent> {
@Autowired @Autowired
private ConfigProtocol configProtocol; private ClientConfigProtocol configProtocol;
@Autowired @Autowired
private OnlineProtocol onlineProtocol; private ClientOnlineProtocol onlineProtocol;
@Async @Async
@Override @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.boot.utils.JSONUtils;
import com.acgist.taoyao.signal.client.ClientSession; import com.acgist.taoyao.signal.client.ClientSession;
import com.acgist.taoyao.signal.client.ClientSessionManager; 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 com.acgist.taoyao.signal.protocol.platform.ErrorProtocol;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -95,7 +95,7 @@ public class ProtocolManager {
return; return;
} }
final ClientSession session = this.clientSessionManager.session(instance); final ClientSession session = this.clientSessionManager.session(instance);
if(protocol instanceof RegisterProtocol) { if(protocol instanceof ClientRegisterProtocol) {
protocol.execute(sn, value, session); protocol.execute(sn, value, session);
} else if(session.authorized() && sn.equals(session.sn())) { } else if(session.authorized() && sn.equals(session.sn())) {
protocol.execute(sn, value, session); protocol.execute(sn, value, session);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -19,14 +19,14 @@ import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter;
* @author acgist * @author acgist
*/ */
@Component @Component
public class RegisterProtocol extends ProtocolMapAdapter { public class ClientRegisterProtocol extends ProtocolMapAdapter {
public static final Integer PID = 2000; public static final Integer PID = 2000;
@Autowired @Autowired
private SecurityProperties securityProperties; private SecurityProperties securityProperties;
public RegisterProtocol() { public ClientRegisterProtocol() {
super(PID, "注册信令"); 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.client.ClientSessionManager;
import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter; import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter;
import lombok.extern.slf4j.Slf4j;
/** /**
* 终端状态信令 * 终端状态信令
* *
* @author acgist * @author acgist
*/ */
@Slf4j
@Component @Component
public class StatusProtocol extends ProtocolMapAdapter { public class ClientStatusProtocol extends ProtocolMapAdapter {
public static final Integer PID = 2007; public static final Integer PID = 2998;
@Autowired @Autowired
private ClientSessionManager clientSessionManager; private ClientSessionManager clientSessionManager;
public StatusProtocol() { public ClientStatusProtocol() {
super(PID, "终端状态信令"); super(PID, "终端状态信令");
} }
@@ -38,13 +35,8 @@ public class StatusProtocol extends ProtocolMapAdapter {
if(StringUtils.isEmpty(querySn)) { if(StringUtils.isEmpty(querySn)) {
querySn = sn; querySn = sn;
} }
final ClientSession clientSession = this.clientSessionManager.session(querySn); message.setBody(this.clientSessionManager.status(querySn));
if(clientSession != null) { session.push(message);
message.setBody(clientSession.status());
session.push(message);
} else {
log.warn("终端无效:{}", querySn);
}
} }
} }

View File

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