From 3a345ab96682a427e029eae57f940838e3e1be4b Mon Sep 17 00:00:00 2001
From: "PC-20230316NUNE\\Administrator" <2858626794@qq.com>
Date: Fri, 26 Jan 2024 18:54:59 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=B8=A7=E5=90=8C=E6=AD=A5DE?=
=?UTF-8?q?MO?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
JisolGameServer/GFrameDemo/.gitignore | 38 ++++++++++++++
JisolGameServer/GFrameDemo/pom.xml | 49 +++++++++++++++++
.../jisol/ngame/frame/JNFrameApplication.java | 19 +++++++
.../frame/listener/InitNGameListener.java | 15 ++++++
.../frame/network/NSocketConfigurer.java | 32 ++++++++++++
.../jisol/ngame/frame/network/WebSocket.java | 52 +++++++++++++++++++
.../ngame/frame/network/client/GClient.java | 39 ++++++++++++++
JisolGameServer/JNGame | 2 +-
JisolGameServer/pom.xml | 1 +
9 files changed, 246 insertions(+), 1 deletion(-)
create mode 100644 JisolGameServer/GFrameDemo/.gitignore
create mode 100644 JisolGameServer/GFrameDemo/pom.xml
create mode 100644 JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/JNFrameApplication.java
create mode 100644 JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/listener/InitNGameListener.java
create mode 100644 JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/network/NSocketConfigurer.java
create mode 100644 JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/network/WebSocket.java
create mode 100644 JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/network/client/GClient.java
diff --git a/JisolGameServer/GFrameDemo/.gitignore b/JisolGameServer/GFrameDemo/.gitignore
new file mode 100644
index 00000000..5ff6309b
--- /dev/null
+++ b/JisolGameServer/GFrameDemo/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/JisolGameServer/GFrameDemo/pom.xml b/JisolGameServer/GFrameDemo/pom.xml
new file mode 100644
index 00000000..d5457d8a
--- /dev/null
+++ b/JisolGameServer/GFrameDemo/pom.xml
@@ -0,0 +1,49 @@
+
+
+ 4.0.0
+
+ org.example
+ JisolGameServer
+ 1.0-SNAPSHOT
+
+
+ cn.jisol
+ GFrameDemo
+
+
+ 8
+ 8
+ UTF-8
+
+
+
+
+ cn.jisol
+ JNGame
+ 2.0-SNAPSHOT
+
+
+ com.google.code.gson
+ gson
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.5.2
+
+
+ com.h2database
+ h2
+ runtime
+
+
+ mysql
+ mysql-connector-java
+ runtime
+ 8.0.30
+
+
+
+
\ No newline at end of file
diff --git a/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/JNFrameApplication.java b/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/JNFrameApplication.java
new file mode 100644
index 00000000..a1c0465b
--- /dev/null
+++ b/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/JNFrameApplication.java
@@ -0,0 +1,19 @@
+package cn.jisol.ngame.frame;
+
+import cn.jisol.ngame.util.spring.SpringBeanUtils;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.retry.annotation.EnableRetry;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@EnableRetry
+@SpringBootApplication
+@EnableScheduling
+public class JNFrameApplication {
+
+ public static void main(String[] args) {
+ SpringBeanUtils.context = SpringApplication.run(JNFrameApplication.class);
+ }
+
+}
diff --git a/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/listener/InitNGameListener.java b/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/listener/InitNGameListener.java
new file mode 100644
index 00000000..13947c5b
--- /dev/null
+++ b/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/listener/InitNGameListener.java
@@ -0,0 +1,15 @@
+package cn.jisol.ngame.frame.listener;
+
+import cn.hutool.core.util.ClassUtil;
+import cn.jisol.ngame.listener.InitNGameRPCListener;
+import org.springframework.stereotype.Component;
+
+import java.util.Set;
+
+@Component
+public class InitNGameListener extends InitNGameRPCListener {
+ @Override
+ public Set> getScanPackage() {
+ return ClassUtil.scanPackage("cn.jisol");
+ }
+}
diff --git a/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/network/NSocketConfigurer.java b/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/network/NSocketConfigurer.java
new file mode 100644
index 00000000..2d43fb69
--- /dev/null
+++ b/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/network/NSocketConfigurer.java
@@ -0,0 +1,32 @@
+package cn.jisol.ngame.frame.network;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
+import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
+import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+
+@Configuration
+@EnableWebSocketMessageBroker
+public class NSocketConfigurer implements WebSocketMessageBrokerConfigurer {
+
+ /**
+ * 添加一个服务端点,来接收客户端的连接
+ * @param registry
+ */
+ @Override
+ public void registerStompEndpoints(StompEndpointRegistry registry) {
+ registry.addEndpoint("/websocket").setAllowedOrigins("*");
+ }
+
+ /**
+ * 开启WebSocket支持
+ * @return
+ */
+ @Bean
+ public ServerEndpointExporter serverEndpointExporter() {
+ return new ServerEndpointExporter();
+ }
+
+}
diff --git a/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/network/WebSocket.java b/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/network/WebSocket.java
new file mode 100644
index 00000000..4c109a0d
--- /dev/null
+++ b/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/network/WebSocket.java
@@ -0,0 +1,52 @@
+package cn.jisol.ngame.frame.network;
+
+import cn.jisol.ngame.NSystem;
+import cn.jisol.ngame.frame.network.client.GClient;
+import cn.jisol.ngame.network.JNetwork;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+
+import javax.websocket.OnClose;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.ServerEndpoint;
+import java.io.InputStream;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
+
+@ServerEndpoint(
+ value = "/websocket"
+)
+@Controller
+public class WebSocket {
+
+ public static final Map CLIENTS = new ConcurrentHashMap<>();
+
+ @OnOpen
+ public void onOpen(Session session){
+
+ GClient client = new GClient(session);
+ CLIENTS.put(session.getId(), client);
+
+ NSystem.Log("连接WebSocket成功");
+
+ }
+
+ @OnMessage
+ public void onMessage(Session session, InputStream inputStream){
+
+ NSystem.Log("收到请求");
+
+ GClient client = CLIENTS.get(session.getId());
+ JNetwork.onMessage(inputStream,client,client);
+
+ }
+
+ @OnClose
+ public void onClose(Session session){
+
+ }
+
+}
diff --git a/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/network/client/GClient.java b/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/network/client/GClient.java
new file mode 100644
index 00000000..8baacffb
--- /dev/null
+++ b/JisolGameServer/GFrameDemo/src/main/java/cn/jisol/ngame/frame/network/client/GClient.java
@@ -0,0 +1,39 @@
+package cn.jisol.ngame.frame.network.client;
+
+import cn.jisol.ngame.client.QueueNClient;
+
+import javax.websocket.Session;
+import java.io.IOException;
+
+public class GClient extends QueueNClient {
+
+ public Session session;
+
+ public GClient(Session session){
+ super(session.getId());
+ this.session = session;
+ }
+
+ @Override
+ protected void onMessage(byte[] bytes) {
+ if (session.isOpen()){
+ try {
+ session.getBasicRemote().sendObject(bytes);
+ } catch (Exception ignored) {}
+ }
+ }
+
+ @Override
+ protected void onClose() {
+ if (session.isOpen()){
+ try {
+ session.close();
+ } catch (IOException ignored) {}
+ }
+ }
+
+ @Override
+ public boolean isOpen() {
+ return session.isOpen();
+ }
+}
diff --git a/JisolGameServer/JNGame b/JisolGameServer/JNGame
index 87cdbc5b..4a1172ac 160000
--- a/JisolGameServer/JNGame
+++ b/JisolGameServer/JNGame
@@ -1 +1 @@
-Subproject commit 87cdbc5b91be3f46c06c6a647ed9cf3525a009eb
+Subproject commit 4a1172acf2b203d0400931e7914a87520a8a02ff
diff --git a/JisolGameServer/pom.xml b/JisolGameServer/pom.xml
index 82b3947c..90df919b 100644
--- a/JisolGameServer/pom.xml
+++ b/JisolGameServer/pom.xml
@@ -17,6 +17,7 @@
Main
+ GFrameDemo
pom