Files
schafkopf-bot/Backend/schafkopf-client/src/main/java/org/schafkopf/FrontendEndpoint.java
Valentin Heiserer a0a1cfaa4a Message types and server (#44)
* message type and handling

* deleted web-content and fixed bug

* edited main page
2024-04-23 21:54:31 +02:00

73 lines
1.9 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;
private final MessageListener messageListener;
/**
* Class that represents one Frontend Connection.
*/
public FrontendEndpoint(BackendServer backendServer, MessageListener messageListener) {
this.messageListener = messageListener;
this.backendServer = backendServer;
System.out.println("new FrontendEndpoint");
}
/**
* Class that represents one Frontend Connection.
*/
@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);
if (messageListener != null) {
messageListener.receiveMessage(message); // Notify the listener
}
}
@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();
}
}
}