Hi ,
I'm trying to close the session from server end which are not websocket sessions ,
`public static final CopyOnWriteArrayList sessions = new CopyOnWriteArrayList();
private static final Map<String, WebSocketSession> sessionsWithStations = Collections.synchronizedMap(new ConcurrentHashMap<String,WebSocketSession>());
@OverRide //Look Like the OnOpen
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
try {
String clientId = session.getAttributes().get("clientId").toString();
sessions.add(session);
}catch(Exception e) {
e.printStackTrace();
}
}`
`public void sessionBaseFunctions(String functionStr,String clientId) {
try {
WebSocketSession webSocketSession = sessionsWithStations.get(clientId);
if(webSocketSession != null && webSocketSession.isOpen()) {
webSocketSession.close(CloseStatus.NORMAL);
System.out.println("session termination called.....");
}
}catch (Exception e) {
e.printStackTrace();
}
}`
calling sessionBasedFunctions method in scheduler for every 20 mins , But the thing is clientId still showing the connect and client able to send the messages.
need a solution for this.
Hi ,
I'm trying to close the session from server end which are not websocket sessions ,
`public static final CopyOnWriteArrayList sessions = new CopyOnWriteArrayList();
private static final Map<String, WebSocketSession> sessionsWithStations = Collections.synchronizedMap(new ConcurrentHashMap<String,WebSocketSession>());
@OverRide //Look Like the OnOpen
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
try {
String clientId = session.getAttributes().get("clientId").toString();
sessions.add(session);
}catch(Exception e) {
e.printStackTrace();
}
}`