mirror of
https://github.com/Vale54321/schafkopf-bot.git
synced 2025-12-16 03:39:34 +01:00
78 lines
2.1 KiB
Java
78 lines
2.1 KiB
Java
package org.schafkopf;
|
|
|
|
import java.io.IOException;
|
|
import java.util.concurrent.CountDownLatch;
|
|
import org.eclipse.jetty.websocket.api.Session;
|
|
import org.eclipse.jetty.websocket.api.WebSocketAdapter;
|
|
|
|
/** Class that represents one Frontend Connection. */
|
|
public class FrontendEndpoint extends WebSocketAdapter {
|
|
private final CountDownLatch closureLatch = new CountDownLatch(1);
|
|
private BackendServer backendServer;
|
|
|
|
public FrontendEndpoint(BackendServer backendServer) {
|
|
this.backendServer = backendServer;
|
|
System.out.println("new FrontendEndpoint");
|
|
}
|
|
|
|
@Override
|
|
public void onWebSocketConnect(Session session) {
|
|
super.onWebSocketConnect(session);
|
|
String clientIp = session.getRemoteAddress().toString();
|
|
System.out.println("Endpoint connected from ip: " + clientIp);
|
|
|
|
backendServer.addFrontendEndpoint(this);
|
|
}
|
|
|
|
@Override
|
|
public void onWebSocketText(String message) {
|
|
super.onWebSocketText(message);
|
|
System.out.println("Received TEXT message:" + message);
|
|
|
|
if (message.contains("startsimulation")) {
|
|
backendServer.schafkopfGame.startGame();
|
|
}
|
|
|
|
if (message.contains("stopsimulation")) {
|
|
backendServer.schafkopfGame.stopGame();
|
|
}
|
|
|
|
if (message.contains("showtrumpf")) {
|
|
backendServer.schafkopfGame.showTrumpf();
|
|
}
|
|
|
|
if (message.contains("showfarben")) {
|
|
backendServer.schafkopfGame.showFarbe();
|
|
}
|
|
|
|
if (message.contains("setgame")) {
|
|
backendServer.schafkopfGame.setGame(message);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onWebSocketClose(int statusCode, String reason) {
|
|
super.onWebSocketClose(statusCode, reason);
|
|
|
|
backendServer.removeFrontendEndpoint(this);
|
|
|
|
System.out.println("Socket Closed: [" + statusCode + "] " + reason);
|
|
closureLatch.countDown();
|
|
}
|
|
|
|
@Override
|
|
public void onWebSocketError(Throwable cause) {
|
|
super.onWebSocketError(cause);
|
|
cause.printStackTrace(System.err);
|
|
}
|
|
|
|
/** send a Message to the connected FrontEnd. */
|
|
public void sendMessage(String message) {
|
|
try {
|
|
getRemote().sendString(message);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|