From 7b5e41ff5a7003bcbbf114e48cf88ca7e1f4a3ee Mon Sep 17 00:00:00 2001 From: acgist <289547414@qq.com> Date: Fri, 18 Nov 2022 22:26:35 +0800 Subject: [PATCH] =?UTF-8?q?[+]=20=E5=88=9B=E5=BB=BA=E4=BC=9A=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boot/config/OpenApiAutoConfiguration.java | 20 +- .../com/acgist/taoyao/meeting/Meeting.java | 13 ++ .../acgist/taoyao/meeting/MeetingManager.java | 45 +++- .../meeting/controller/MeetingController.java | 15 +- .../listener/MeetingCreateListener.java | 37 ++++ taoyao-server/LICENSE | 201 ------------------ .../src/main/resources/static/meeting.html | 4 +- taoyao-signal/README.md | 16 +- .../signal/client/ClientSessionManager.java | 4 +- .../signal/client/ClientSessionStatus.java | 7 + ...{CloseEvent.java => ClientCloseEvent.java} | 6 +- ...terEvent.java => ClientRegisterEvent.java} | 6 +- .../event/meeting/MeetingCreateEvent.java | 22 ++ ...Listener.java => ClientCloseListener.java} | 8 +- ...tener.java => ClientRegisterListener.java} | 8 +- .../signal/protocol/ProtocolMapAdapter.java | 2 + .../protocol/client/ClientCloseProtocol.java | 4 +- .../protocol/client/ClientOnlineProtocol.java | 4 +- .../client/ClientRegisterProtocol.java | 8 +- .../meeting/MeetingCreateProtocol.java | 31 +++ .../meeting/MeetingRegisterProtocol.java | 5 - 21 files changed, 204 insertions(+), 262 deletions(-) create mode 100644 taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/listener/MeetingCreateListener.java delete mode 100644 taoyao-server/LICENSE rename taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/{CloseEvent.java => ClientCloseEvent.java} (71%) rename taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/{RegisterEvent.java => ClientRegisterEvent.java} (70%) create mode 100644 taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/meeting/MeetingCreateEvent.java rename taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/{CloseListener.java => ClientCloseListener.java} (83%) rename taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/{RegisterListener.java => ClientRegisterListener.java} (85%) create mode 100644 taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingCreateProtocol.java delete mode 100644 taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingRegisterProtocol.java diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/OpenApiAutoConfiguration.java b/taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/OpenApiAutoConfiguration.java index bd52a07..65f6ed5 100644 --- a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/OpenApiAutoConfiguration.java +++ b/taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/OpenApiAutoConfiguration.java @@ -1,7 +1,5 @@ package com.acgist.taoyao.boot.config; -import java.net.InetAddress; -import java.net.UnknownHostException; import java.util.List; import org.springdoc.core.GroupedOpenApi; @@ -69,9 +67,9 @@ public class OpenApiAutoConfiguration { @Bean @ConditionalOnMissingBean public OpenAPI openAPI() { + // 本地测试不要配置服务器的信息 return new OpenAPI() .info(this.buildInfo()) - .servers(this.buildServers()) .security(this.buildSecurity()) .components(this.buildComponents()); } @@ -106,22 +104,6 @@ public class OpenApiAutoConfiguration { .url("https://www.apache.org/licenses/LICENSE-2.0.html"); } - /** - * @return 服务器的信息 - */ - private List buildServers() { - try { - return List.of( - new Server() - .url(String.format("https://%s:%d", InetAddress.getLocalHost().getHostAddress(), this.port)) - .description(this.taoyaoProperties.getDescription()) - ); - } catch (UnknownHostException e) { - log.error("获取服务器的信息异常", e); - } - return List.of(); - } - /** * @return 授权 */ diff --git a/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/Meeting.java b/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/Meeting.java index a4c5d53..b759987 100644 --- a/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/Meeting.java +++ b/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/Meeting.java @@ -1,5 +1,7 @@ package com.acgist.taoyao.meeting; +import java.util.List; + import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; @@ -13,5 +15,16 @@ import lombok.Setter; @Setter @Schema(title = "会议", description = "会议") public class Meeting { + + /** + * 会议标识 + */ + @Schema(title = "会议标识", description = "会议标识") + private String id; + /** + * 终端会话标识列表 + */ + @Schema(title = "终端会话标识列表", description = "终端会话标识列表") + private List sns; } diff --git a/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/MeetingManager.java b/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/MeetingManager.java index acd40bc..c5c7b25 100644 --- a/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/MeetingManager.java +++ b/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/MeetingManager.java @@ -1,10 +1,53 @@ package com.acgist.taoyao.meeting; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + +import org.springframework.stereotype.Service; + +import lombok.extern.slf4j.Slf4j; + /** - * 房间 + * 会议管理 * * @author acgist */ +@Slf4j +@Service public class MeetingManager { + /** + * 会议列表 + */ + private List meetings = new CopyOnWriteArrayList<>(); + + /** + * @return 所有会议列表 + */ + public List meetings() { + return this.meetings; + } + + /** + * @param id 会议标识 + * + * @return 会议信息 + */ + public Meeting meeting(String id) { + return this.meetings.stream() + .filter(v -> v.getId().equals(id)) + .findFirst() + .orElse(null); + } + + /** + * @param id 会议标识 + * + * @return 会议所有终端标识 + */ + public List sns(String id) { + final Meeting meeting = this.meeting(id); + return meeting == null ? List.of() : meeting.getSns(); + } + } diff --git a/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/controller/MeetingController.java b/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/controller/MeetingController.java index 9a5e9a9..5e38e34 100644 --- a/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/controller/MeetingController.java +++ b/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/controller/MeetingController.java @@ -1,5 +1,6 @@ package com.acgist.taoyao.meeting.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; @@ -7,6 +8,7 @@ import org.springframework.web.bind.annotation.RestController; import com.acgist.taoyao.boot.model.Message; import com.acgist.taoyao.meeting.Meeting; +import com.acgist.taoyao.meeting.MeetingManager; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; @@ -24,23 +26,26 @@ import io.swagger.v3.oas.annotations.tags.Tag; @RequestMapping("/meeting") public class MeetingController { + @Autowired + private MeetingManager meetingManager; + @Operation(summary = "会议列表", description = "会议列表") @GetMapping("/list") @ApiResponse(content = @Content(schema = @Schema(implementation = Meeting.class))) public Message list() { - return Message.success(); + return Message.success(this.meetingManager.meetings()); } @Operation(summary = "会议状态", description = "会议状态") @GetMapping("/status/{id}") public Message status(@PathVariable String id) { - return Message.success(); + return Message.success(this.meetingManager.meeting(id)); } @Operation(summary = "会议终端列表", description = "会议终端列表") - @GetMapping("/list/client") - public Message listClient() { - return Message.success(); + @GetMapping("/list/client/{id}") + public Message listClient(@PathVariable String id) { + return Message.success(this.meetingManager.sns(id)); } } diff --git a/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/listener/MeetingCreateListener.java b/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/listener/MeetingCreateListener.java new file mode 100644 index 0000000..e6afebc --- /dev/null +++ b/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/listener/MeetingCreateListener.java @@ -0,0 +1,37 @@ +package com.acgist.taoyao.meeting.listener; + +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.acgist.taoyao.boot.model.Message; +import com.acgist.taoyao.meeting.MeetingManager; +import com.acgist.taoyao.signal.client.ClientSession; +import com.acgist.taoyao.signal.event.meeting.MeetingCreateEvent; +import com.acgist.taoyao.signal.listener.ApplicationListenerAdapter; + +import lombok.extern.slf4j.Slf4j; + +/** + * 创建会议监听 + * + * @author acgist + */ +@Slf4j +@Component +public class MeetingCreateListener extends ApplicationListenerAdapter { + + @Autowired + private MeetingManager meetingManager; + + @Override + public void onApplicationEvent(MeetingCreateEvent event) { +// this.meetingManager.create(); + final ClientSession session = event.getSession(); + final Message message = event.getMessage(); + message.setBody(Map.of("id", "1234")); + session.push(message); + } + +} diff --git a/taoyao-server/LICENSE b/taoyao-server/LICENSE deleted file mode 100644 index 6e6a6b0..0000000 --- a/taoyao-server/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [2022] [acgist] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/taoyao-server/src/main/resources/static/meeting.html b/taoyao-server/src/main/resources/static/meeting.html index 0c2b23a..397caa3 100644 --- a/taoyao-server/src/main/resources/static/meeting.html +++ b/taoyao-server/src/main/resources/static/meeting.html @@ -11,7 +11,7 @@
- + @@ -69,6 +69,8 @@ } // 创建房间 function create() { + taoyao.createMeeting(data => { + }); } // 进入房间 function enter() { diff --git a/taoyao-signal/README.md b/taoyao-signal/README.md index d7e21cf..2ae108f 100644 --- a/taoyao-signal/README.md +++ b/taoyao-signal/README.md @@ -59,7 +59,7 @@ } ``` -### 注册信令(2000) +### 终端注册信令(2000) 终端->服务端:注册成功后服务端响应,同时下发配置信息,广播终端上线事件。 @@ -74,7 +74,7 @@ } ``` -### 关闭信令(2001) +### 终端关闭信令(2001) 终端->服务端:广播终端下线事件,同时释放所有资源(信令通道、媒体通道等等) @@ -82,9 +82,9 @@ {} ``` -### 上线信令(2002) +### 终端上线信令(2002) -服务端->终端:参考[注册信令](#注册信令) +服务端->终端:参考[终端注册信令](#注册信令) ``` { @@ -92,9 +92,9 @@ } ``` -### 下线信令(2003) +### 终端下线信令(2003) -服务端->终端:参考[关闭信令](#关闭信令) +服务端->终端:参考[终端关闭信令](#关闭信令) ``` { @@ -230,11 +230,15 @@ ### 暂停指令(5004) +终端->服务端 暂停发布、订阅(不关媒体流通道) +MCU/SFU模式有效 ### 恢复指令(5005) +终端->服务端 暂停发布、订阅(不关媒体流通道) +MCU/SFU模式有效 ### 开启录像(5006) diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionManager.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionManager.java index da2557b..c9e783b 100644 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionManager.java +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionManager.java @@ -11,7 +11,7 @@ import org.springframework.stereotype.Service; import com.acgist.taoyao.boot.config.TaoyaoProperties; import com.acgist.taoyao.boot.model.Message; -import com.acgist.taoyao.signal.event.client.CloseEvent; +import com.acgist.taoyao.signal.event.client.ClientCloseEvent; import lombok.extern.slf4j.Slf4j; @@ -152,7 +152,7 @@ public class ClientSessionManager { // 移除管理 this.sessions.remove(session); // 关闭事件 - this.context.publishEvent(new CloseEvent(null, session)); + this.context.publishEvent(new ClientCloseEvent(null, session)); } } } diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionStatus.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionStatus.java index 498a6db..78abc41 100644 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionStatus.java +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionStatus.java @@ -4,6 +4,7 @@ import java.time.LocalDateTime; import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; @@ -14,27 +15,33 @@ import lombok.Setter; */ @Getter @Setter +@Schema(title = "终端状态", description = "终端状态") public class ClientSessionStatus { /** * 终端标识 */ + @Schema(title = "终端标识", description = "终端标识") private String sn; /** * IP */ + @Schema(title = "IP", description = "IP") private String ip; /** * MAC */ + @Schema(title = "MAC", description = "MAC") private String mac; /** * 信号强度(0~100) */ + @Schema(title = "信号强度(0~100)", description = "信号强度(0~100)") private Integer signal = 0; /** * 电量(0~100) */ + @Schema(title = "电量(0~100)", description = "电量(0~100)") private Integer battery = 0; /** * 最后心跳时间 diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/CloseEvent.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientCloseEvent.java similarity index 71% rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/CloseEvent.java rename to taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientCloseEvent.java index 6626361..6bb8f3e 100644 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/CloseEvent.java +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientCloseEvent.java @@ -8,17 +8,17 @@ import lombok.Getter; import lombok.Setter; /** - * 关闭事件 + * 终端关闭事件 * * @author acgist */ @Getter @Setter -public class CloseEvent extends ApplicationEventAdapter { +public class ClientCloseEvent extends ApplicationEventAdapter { private static final long serialVersionUID = 1L; - public CloseEvent(Message message, ClientSession session) { + public ClientCloseEvent(Message message, ClientSession session) { super(message, session); } diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/RegisterEvent.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientRegisterEvent.java similarity index 70% rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/RegisterEvent.java rename to taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientRegisterEvent.java index 2ee7136..d8a5af2 100644 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/RegisterEvent.java +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientRegisterEvent.java @@ -10,17 +10,17 @@ import lombok.Getter; import lombok.Setter; /** - * 注册事件 + * 终端注册事件 * * @author acgist */ @Getter @Setter -public class RegisterEvent extends ApplicationEventAdapter { +public class ClientRegisterEvent extends ApplicationEventAdapter { private static final long serialVersionUID = 1L; - public RegisterEvent(Map body, Message message, ClientSession session) { + public ClientRegisterEvent(Map body, Message message, ClientSession session) { super(body, message, session); } diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/meeting/MeetingCreateEvent.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/meeting/MeetingCreateEvent.java new file mode 100644 index 0000000..eb1ecf5 --- /dev/null +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/meeting/MeetingCreateEvent.java @@ -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 MeetingCreateEvent extends ApplicationEventAdapter { + + private static final long serialVersionUID = 1L; + + public MeetingCreateEvent(Map body, Message message, ClientSession session) { + super(body, message, session); + } + +} diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/CloseListener.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientCloseListener.java similarity index 83% rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/CloseListener.java rename to taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientCloseListener.java index e749d93..893c596 100644 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/CloseListener.java +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientCloseListener.java @@ -8,26 +8,26 @@ 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.client.CloseEvent; +import com.acgist.taoyao.signal.event.client.ClientCloseEvent; import com.acgist.taoyao.signal.listener.ApplicationListenerAdapter; import com.acgist.taoyao.signal.protocol.client.ClientOfflineProtocol; import lombok.extern.slf4j.Slf4j; /** - * 关闭监听 + * 终端关闭监听 * * @author acgist */ @Slf4j @Component -public class CloseListener extends ApplicationListenerAdapter { +public class ClientCloseListener extends ApplicationListenerAdapter { @Autowired private ClientOfflineProtocol offlineProtocol; @Override - public void onApplicationEvent(CloseEvent event) { + public void onApplicationEvent(ClientCloseEvent event) { final ClientSession session = event.getSession(); final String sn = session.sn(); if(StringUtils.isEmpty(sn)) { diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/RegisterListener.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientRegisterListener.java similarity index 85% rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/RegisterListener.java rename to taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientRegisterListener.java index 8802257..53a22dc 100644 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/RegisterListener.java +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientRegisterListener.java @@ -8,18 +8,18 @@ import org.springframework.stereotype.Component; 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.event.client.ClientRegisterEvent; import com.acgist.taoyao.signal.listener.ApplicationListenerAdapter; import com.acgist.taoyao.signal.protocol.client.ClientConfigProtocol; import com.acgist.taoyao.signal.protocol.client.ClientOnlineProtocol; /** - * 注册监听 + * 终端注册监听 * * @author acgist */ @Component -public class RegisterListener extends ApplicationListenerAdapter { +public class ClientRegisterListener extends ApplicationListenerAdapter { @Autowired private ClientConfigProtocol configProtocol; @@ -28,7 +28,7 @@ public class RegisterListener extends ApplicationListenerAdapter @Async @Override - public void onApplicationEvent(RegisterEvent event) { + public void onApplicationEvent(ClientRegisterEvent event) { final ClientSession session = event.getSession(); if (!session.authorized()) { return; diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolMapAdapter.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolMapAdapter.java index 27fb94e..673ed47 100644 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolMapAdapter.java +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolMapAdapter.java @@ -22,6 +22,8 @@ public abstract class ProtocolMapAdapter extends ProtocolAdapter { final Object body = message.getBody(); if(body instanceof Map map) { this.execute(sn, map, message, session); + } else if(body == null) { + this.execute(sn, Map.of(), message, session); } else { throw MessageCodeException.of("信令主体类型错误:" + message); } diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientCloseProtocol.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientCloseProtocol.java index c34f078..808a1c7 100644 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientCloseProtocol.java +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientCloseProtocol.java @@ -9,7 +9,7 @@ import com.acgist.taoyao.signal.protocol.ProtocolAdapter; import lombok.extern.slf4j.Slf4j; /** - * 关闭信令 + * 终端关闭信令 * * @author acgist */ @@ -20,7 +20,7 @@ public class ClientCloseProtocol extends ProtocolAdapter { public static final Integer PID = 2001; public ClientCloseProtocol() { - super(PID, "关闭信令"); + super(PID, "终端关闭信令"); } @Override diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientOnlineProtocol.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientOnlineProtocol.java index 26f7bf0..57dd519 100644 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientOnlineProtocol.java +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientOnlineProtocol.java @@ -7,7 +7,7 @@ import com.acgist.taoyao.signal.client.ClientSession; import com.acgist.taoyao.signal.protocol.ProtocolAdapter; /** - * 上线信令 + * 终端上线信令 * * @author acgist */ @@ -17,7 +17,7 @@ public class ClientOnlineProtocol extends ProtocolAdapter { public static final Integer PID = 2002; public ClientOnlineProtocol() { - super(PID, "上线信令"); + super(PID, "终端上线信令"); } @Override diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientRegisterProtocol.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientRegisterProtocol.java index b0fcf26..714760f 100644 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientRegisterProtocol.java +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientRegisterProtocol.java @@ -10,11 +10,11 @@ import com.acgist.taoyao.boot.config.SecurityProperties; import com.acgist.taoyao.boot.model.Message; import com.acgist.taoyao.boot.model.MessageCode; import com.acgist.taoyao.signal.client.ClientSession; -import com.acgist.taoyao.signal.event.client.RegisterEvent; +import com.acgist.taoyao.signal.event.client.ClientRegisterEvent; import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter; /** - * 注册信令 + * 终端注册信令 * * @author acgist */ @@ -27,7 +27,7 @@ public class ClientRegisterProtocol extends ProtocolMapAdapter { private SecurityProperties securityProperties; public ClientRegisterProtocol() { - super(PID, "注册信令"); + super(PID, "终端注册信令"); } @Override @@ -48,7 +48,7 @@ public class ClientRegisterProtocol extends ProtocolMapAdapter { // 推送消息 session.push(message.cloneWidthoutBody()); // 发送事件 - this.publishEvent(new RegisterEvent(body, message, session)); + this.publishEvent(new ClientRegisterEvent(body, message, session)); } } diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingCreateProtocol.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingCreateProtocol.java new file mode 100644 index 0000000..4989702 --- /dev/null +++ b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingCreateProtocol.java @@ -0,0 +1,31 @@ +package com.acgist.taoyao.signal.protocol.meeting; + +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.MeetingCreateEvent; +import com.acgist.taoyao.signal.protocol.ProtocolMapAdapter; + +/** + * 创建会议信令 + * + * @author acgist + */ +@Component +public class MeetingCreateProtocol extends ProtocolMapAdapter { + + public static final Integer PID = 4000; + + public MeetingCreateProtocol() { + super(PID, "创建会议信令"); + } + + @Override + public void execute(String sn, Map body, Message message, ClientSession session) { + this.publishEvent(new MeetingCreateEvent(body, message, session)); + } + +} diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingRegisterProtocol.java b/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingRegisterProtocol.java deleted file mode 100644 index 14db148..0000000 --- a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingRegisterProtocol.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.acgist.taoyao.signal.protocol.meeting; - -public class MeetingRegisterProtocol { - -}