diff --git a/src/main/java/de/thm/arsnova/controller/SocketController.java b/src/main/java/de/thm/arsnova/controller/SocketController.java index 6b3b117052d444ee6f1595e889829b1185fb6a32..eafd424ff5e812e004ef9b4a76e274a3a6b19717 100644 --- a/src/main/java/de/thm/arsnova/controller/SocketController.java +++ b/src/main/java/de/thm/arsnova/controller/SocketController.java @@ -43,7 +43,7 @@ import de.thm.arsnova.socket.ARSnovaSocketIOServer; @RequestMapping("/socket") public class SocketController extends AbstractController { - public static final Logger LOGGER = LoggerFactory.getLogger(SessionController.class); + public static final Logger LOGGER = LoggerFactory.getLogger(SocketController.class); @Autowired private IUserService userService; @@ -58,7 +58,7 @@ public class SocketController extends AbstractController { return; } User u = userService.getCurrentUser(); - LOGGER.info("authorize session: " + socketid + ", user is: " + u); + LOGGER.info("Mapping socket {} to user {}.", socketid, u.getUsername()); response.setStatus(u != null ? HttpStatus.NO_CONTENT.value() : HttpStatus.UNAUTHORIZED.value()); if (u != null) { userService.putUser2SocketId(UUID.fromString(socketid), u); diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java index d1e55601b6003ec734621dfa14ae37fa054fc6ef..7f0279ea5599125dc488fcca6b282fc7c5e046ca 100644 --- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java +++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java @@ -115,20 +115,23 @@ public class ARSnovaSocketIOServer { server.addConnectListener(new ConnectListener() { @Override public void onConnect(SocketIOClient client) { - logger.info("addConnectListener.onConnect: Client: {}", new Object[] { client }); + logger.info("Client {} connected.", client.getSessionId()); } }); server.addDisconnectListener(new DisconnectListener() { @Override public void onDisconnect(SocketIOClient client) { - logger.info("addDisconnectListener.onDisconnect: Client: {}", new Object[] { client }); - String sessionKey = userService.getSessionForUser( - userService.getUser2SocketId(client.getSessionId()).getUsername() - ); - reportActiveUserCountForSession(sessionKey); + logger.info("Client {} disconnected.", client.getSessionId()); + String username = userService.getUser2SocketId(client.getSessionId()).getUsername(); + String sessionKey = userService.getSessionForUser(username); + logger.info("Removing disconnected user {} (session key: {}).", username, sessionKey); userService.removeUserFromSessionBySocketId(client.getSessionId()); userService.removeUser2SocketId(client.getSessionId()); + if (null != sessionKey) { + /* user disconnected before joining a session */ + reportActiveUserCountForSession(sessionKey); + } } }); @@ -238,7 +241,7 @@ public class ARSnovaSocketIOServer { public void reportActiveUserCountForSession(String sessionKey) { /* This check is needed as long as the HTTP polling solution is active simultaneously. */ - int count = sessionService.countActiveUsers(sessionKey); + int count = userService.getUsersInSessionCount(sessionKey); if (count == lastActiveUserCount) { return; } @@ -275,7 +278,7 @@ public class ARSnovaSocketIOServer { for (SocketIOClient c : server.getAllClients()) { User u = userService.getUser2SocketId(c.getSessionId()); if (u != null && users.contains(u)) { - logger.info("sending out to client {}, username is: {}, current session is: {}", + logger.debug("sending out to client {}, username is: {}, current session is: {}", new Object[] { c.getSessionId(), u.getUsername(), sessionKey }); c.sendEvent(eventName, data); }