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);
 			}