mirror of
https://github.com/Vale54321/schafkopf-bot.git
synced 2025-12-16 19:59:33 +01:00
73 lines
1.9 KiB
Java
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();
|
|
}
|
|
}
|
|
}
|