package com.megatim.fdxconsultation.service.impl.sockets;
|
|
import com.megatim.fdxconsultation.core.ifaces.stats.TableauBordManager;
|
import com.megatim.fdxconsultation.service.impl.sockets.encoders.ParticipantToFichiersDecoder;
|
import com.megatim.fdxconsultation.service.impl.sockets.encoders.ParticipantToFichiersEncoder;
|
import java.io.IOException;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Map.Entry;
|
import java.util.logging.Level;
|
import java.util.logging.Logger;
|
import javax.inject.Inject;
|
import javax.websocket.EncodeException;
|
import javax.websocket.OnClose;
|
import javax.websocket.OnError;
|
import javax.websocket.OnMessage;
|
import javax.websocket.OnOpen;
|
import javax.websocket.Session;
|
import javax.websocket.server.PathParam;
|
import javax.websocket.server.ServerEndpoint;
|
|
/**
|
*
|
* @author ASUS
|
*/
|
@ServerEndpoint(value = "/tableaubord/{username}",
|
encoders = {ParticipantToFichiersEncoder.class},
|
decoders = {ParticipantToFichiersDecoder.class}
|
)
|
public class TableauBordsEndpoint {
|
|
@Inject
|
private TableauBordManager manager;
|
|
@Inject
|
private UserSessionBean userSessionBean;
|
|
@OnOpen
|
public void onOpen(Session session, @PathParam("username") String username) {
|
try {
|
session.getBasicRemote().sendObject(manager.userTableauBordToTypeFichiers(username));
|
userSessionBean.getSessionMap().put(username, session);
|
} catch (IOException | EncodeException ex) {
|
Logger.getLogger(FichiersEndpoint.class.getName()).log(Level.SEVERE, null, ex);
|
}
|
}
|
|
@OnMessage
|
public void onMessage(Map<String, List<String>> message, Session session) {
|
}
|
|
@OnClose
|
public void onClose(Session session) {
|
removeSession(session);
|
}
|
|
@OnError
|
public void onError(Session session, Throwable throwable) {
|
removeSession(session);
|
}
|
|
private void removeSession(Session session) {
|
String userName = null;
|
|
for (Entry<String, Session> e : userSessionBean.getSessionMap().entrySet()) {
|
if (e.getValue().getId().equals(session.getId())) {
|
userName = e.getKey();
|
break;
|
}
|
}
|
if (userName != null) {
|
userSessionBean.getSessionMap().remove(userName);
|
}
|
}
|
}
|