Sync: code local unifié

Synchronisation du code source local (fait foi).

Signed-off-by: lions dev Team
This commit is contained in:
dahoud
2026-03-15 16:25:40 +00:00
parent e82dc356f3
commit 75a19988b0
730 changed files with 53599 additions and 13145 deletions

View File

@@ -0,0 +1,43 @@
package dev.lions.unionflow.server.resource;
import io.quarkus.websockets.next.OnClose;
import io.quarkus.websockets.next.OnOpen;
import io.quarkus.websockets.next.OnTextMessage;
import io.quarkus.websockets.next.WebSocket;
import io.quarkus.websockets.next.WebSocketConnection;
import org.jboss.logging.Logger;
/**
* Endpoint WebSocket pour le dashboard temps réel.
* Les clients mobiles et web se connectent ici pour recevoir les mises à jour.
* Types de messages supportés : stats_update, new_activity, event_update, notification, pong
*/
@WebSocket(path = "/ws/dashboard")
public class DashboardWebSocketEndpoint {
private static final Logger LOG = Logger.getLogger(DashboardWebSocketEndpoint.class);
@OnOpen
public String onOpen(WebSocketConnection connection) {
LOG.infof("WebSocket connection opened: %s", connection.id());
return "{\"type\":\"connected\",\"data\":{\"message\":\"Connected to UnionFlow Dashboard WebSocket\"}}";
}
@OnTextMessage
public String onMessage(String message, WebSocketConnection connection) {
LOG.debugf("WebSocket message received from %s: %s", connection.id(), message);
// Répondre aux pings avec un pong (heartbeat)
if ("ping".equalsIgnoreCase(message.trim()) || message.contains("\"type\":\"ping\"")) {
return "{\"type\":\"pong\",\"data\":{\"timestamp\":" + System.currentTimeMillis() + "}}";
}
// Accusé de réception pour les autres messages
return "{\"type\":\"ack\",\"data\":{\"received\":true}}";
}
@OnClose
public void onClose(WebSocketConnection connection) {
LOG.infof("WebSocket connection closed: %s", connection.id());
}
}