se añadio websocket para terminar el remate
Some checks failed
Deploy Spring Boot App / build-and-deploy (push) Has been cancelled
Some checks failed
Deploy Spring Boot App / build-and-deploy (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package com.example.fercoganbackend.component;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.socket.CloseStatus;
|
||||
import org.springframework.web.socket.TextMessage;
|
||||
import org.springframework.web.socket.WebSocketSession;
|
||||
import org.springframework.web.socket.handler.TextWebSocketHandler;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArraySet;
|
||||
|
||||
@Component
|
||||
public class EventoWebSocketHandler extends TextWebSocketHandler {
|
||||
|
||||
private final Map<String, Set<WebSocketSession>> sesionesPorRemate = new ConcurrentHashMap<>();
|
||||
|
||||
@Override
|
||||
public void afterConnectionEstablished(WebSocketSession session) {
|
||||
String remateId = session.getUri().getPath().split("/")[3];
|
||||
|
||||
sesionesPorRemate
|
||||
.computeIfAbsent(remateId, k -> new CopyOnWriteArraySet<>())
|
||||
.add(session);
|
||||
|
||||
System.out.println("[EVENTOS] Cliente conectado al remate: " + remateId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
|
||||
String remateId = session.getUri().getPath().split("/")[3];
|
||||
sesionesPorRemate.getOrDefault(remateId, Set.of()).remove(session);
|
||||
System.out.println("[EVENTOS] Cliente desconectado: " + remateId);
|
||||
}
|
||||
|
||||
public void enviarEvento(String remateId, String mensaje) {
|
||||
Set<WebSocketSession> sesiones = sesionesPorRemate.get(remateId);
|
||||
if (sesiones == null) return;
|
||||
|
||||
for (WebSocketSession session : sesiones) {
|
||||
try {
|
||||
if (session.isOpen()) {
|
||||
session.sendMessage(new TextMessage(mensaje));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user