From f967b2bfd478d1f646d1acb236312d605497a0b9 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sat, 4 Jan 2025 19:25:10 +0500 Subject: feat: 'server' and 'shared' modules --- server/build.gradle | 48 ++++++++++++++++++++ server/src/kz/ilotterytea/maxon/MaxonServer.java | 52 ++++++++++++++++++++++ .../src/kz/ilotterytea/maxon/ServerLauncher.java | 8 ++++ server/src/main/resources/logback.xml | 15 +++++++ 4 files changed, 123 insertions(+) create mode 100644 server/build.gradle create mode 100644 server/src/kz/ilotterytea/maxon/MaxonServer.java create mode 100644 server/src/kz/ilotterytea/maxon/ServerLauncher.java create mode 100644 server/src/main/resources/logback.xml (limited to 'server') diff --git a/server/build.gradle b/server/build.gradle new file mode 100644 index 0000000..1dedae1 --- /dev/null +++ b/server/build.gradle @@ -0,0 +1,48 @@ +sourceCompatibility = 17 +sourceSets.main.java.srcDirs = ["src/"] + +project.ext.mainClassName = "kz.ilotterytea.maxon.ServerLauncher" + +import org.gradle.internal.os.OperatingSystem + +tasks.register('run', JavaExec) { + dependsOn classes + main = project.mainClassName + classpath = sourceSets.main.runtimeClasspath + standardInput = System.in + workingDir = project.rootDir + ignoreExitValue = true + + if (OperatingSystem.current() == OperatingSystem.MAC_OS) { + // Required to run on macOS + jvmArgs += "-XstartOnFirstThread" + } +} + +tasks.register('debug', JavaExec) { + dependsOn classes + main = project.mainClassName + classpath = sourceSets.main.runtimeClasspath + standardInput = System.in + workingDir = project.assetsDir + ignoreExitValue = true + debug = true +} + +tasks.register('dist', Jar) { + archiveFileName = "${appName}-server.jar" + duplicatesStrategy(DuplicatesStrategy.EXCLUDE) + manifest { + attributes 'Main-Class': project.mainClassName + } + dependsOn configurations.runtimeClasspath + from { + configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } + } + with jar +} + + +dist.dependsOn classes + +eclipse.project.name = appName + "-server" diff --git a/server/src/kz/ilotterytea/maxon/MaxonServer.java b/server/src/kz/ilotterytea/maxon/MaxonServer.java new file mode 100644 index 0000000..7a38a7f --- /dev/null +++ b/server/src/kz/ilotterytea/maxon/MaxonServer.java @@ -0,0 +1,52 @@ +package kz.ilotterytea.maxon; + +import org.java_websocket.WebSocket; +import org.java_websocket.handshake.ClientHandshake; +import org.java_websocket.server.WebSocketServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.net.InetSocketAddress; + +public class MaxonServer extends WebSocketServer { + private static MaxonServer instance; + + private final Logger log; + + private MaxonServer() { + super(new InetSocketAddress(31084)); + this.log = LoggerFactory.getLogger(MaxonServer.class); + } + + @Override + public void onOpen(WebSocket conn, ClientHandshake handshake) { + log.info("{} connected!", conn.getRemoteSocketAddress().getAddress().getHostAddress()); + } + + @Override + public void onClose(WebSocket conn, int code, String reason, boolean remote) { + log.info("Connection {} has been closed! ({} {} {})", conn, code, reason, remote); + } + + @Override + public void onMessage(WebSocket conn, String message) { + log.info("{} says {}", conn, message); + } + + @Override + public void onError(WebSocket conn, Exception ex) { + log.error("Something went wrong", ex); + } + + @Override + public void onStart() { + log.info("Running the server on port {}!", getPort()); + setConnectionLostTimeout(0); + setConnectionLostTimeout(100); + } + + public static MaxonServer getInstance() { + if (instance == null) instance = new MaxonServer(); + return instance; + } +} diff --git a/server/src/kz/ilotterytea/maxon/ServerLauncher.java b/server/src/kz/ilotterytea/maxon/ServerLauncher.java new file mode 100644 index 0000000..4fdd174 --- /dev/null +++ b/server/src/kz/ilotterytea/maxon/ServerLauncher.java @@ -0,0 +1,8 @@ +package kz.ilotterytea.maxon; + +public class ServerLauncher { + public static void main(String[] args) { + MaxonServer server = MaxonServer.getInstance(); + server.start(); + } +} diff --git a/server/src/main/resources/logback.xml b/server/src/main/resources/logback.xml new file mode 100644 index 0000000..4b08185 --- /dev/null +++ b/server/src/main/resources/logback.xml @@ -0,0 +1,15 @@ + + + + + + %cyan(%d{HH:mm:ss.SSS}) %gray([%thread]) %highlight(%-5level) %magenta(%logger{36}) - %msg%n + + + + + + + + -- cgit v1.2.3