diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java
index 5df0665e61218101681e171b1ecf2c1c7a4c6508..26d2300cf503c1298c0452720a7afbe04aac7f3d 100644
--- a/src/main/java/de/thm/arsnova/controller/SessionController.java
+++ b/src/main/java/de/thm/arsnova/controller/SessionController.java
@@ -92,6 +92,15 @@ public class SessionController extends AbstractController {
 		return null;
 	}
 
+	@RequestMapping(value = "/session/{sessionkey}/activeusercount", method = RequestMethod.GET)
+	@ResponseBody
+	public final int countActiveUsers(
+			@PathVariable final String sessionkey,
+			final HttpServletResponse response
+	) {
+		return sessionService.countActiveUsers(sessionkey);
+	}
+
 	@RequestMapping(value = "/session", method = RequestMethod.POST)
 	@ResponseBody
 	public final Session postNewSession(@RequestBody final Session session, final HttpServletResponse response) {
diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index 0273a70b7854a7100881e5e8e550b8c425d07cc7..a9f6dbe791ca64373851f8b183592573c633a935 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -99,13 +99,13 @@ public class CouchDBDao implements IDatabaseDao {
 	public final void setDatabaseName(final String newDatabaseName) {
 		this.databaseName = newDatabaseName;
 	}
-	
-	public void setSessionService(ISessionService sessionService) {
-		this.sessionService = sessionService;
+
+	public final void setSessionService(final ISessionService service) {
+		this.sessionService = service;
 	}
-	
-	public void setUserService(IUserService userService) {
-		this.userService = userService;
+
+	public final void setUserService(final IUserService service) {
+		this.userService = service;
 	}
 
 	/**
@@ -857,17 +857,13 @@ public class CouchDBDao implements IDatabaseDao {
 	}
 
 	@Override
-	public final int getActiveUsers(final long since) {
+	public final int countActiveUsers(final long since) {
 		try {
 			View view = new View("statistic/count_active_users");
 			view.setStartKey(String.valueOf(since));
 			ViewResults results = this.getDatabase().view(view);
 			LOGGER.info("getActiveUsers() {}", results);
-			if (
-					results == null
-					|| results.getResults().isEmpty()
-					|| results.getJSONArray("rows").size() == 0
-			) {
+			if (isEmptyResults(results)) {
 				return 0;
 			}
 			return results.getJSONArray("rows").optJSONObject(0).getInt("value");
@@ -876,7 +872,27 @@ public class CouchDBDao implements IDatabaseDao {
 		}
 		return 0;
 	}
-	
+
+	@Override
+	public final int countActiveUsers(Session session, long since) {
+		try {
+			View view = new View("logged_in/count");
+			view.setStartKey(URLEncoder.encode("[\"" + session.get_id() + "\", " + String.valueOf(since) + "]", "UTF-8"));
+			view.setEndKey(URLEncoder.encode("[\"" + session.get_id() + "\", {}]", "UTF-8"));
+			ViewResults results = this.getDatabase().view(view);
+			if (isEmptyResults(results)) {
+				return 0;
+			}
+			return results.getJSONArray("rows").optJSONObject(0).getInt("value");
+		} catch (UnsupportedEncodingException e) {
+			return 0;
+		}
+	}
+
+	private boolean isEmptyResults(ViewResults results) {
+		return results == null || results.getResults().isEmpty() || results.getJSONArray("rows").size() == 0;
+	}
+
 	@Override
 	public List<Answer> getFreetextAnswers(String sessionKey, String questionId) {
 		Session s = this.getSessionFromKeyword(sessionKey);
@@ -899,11 +915,9 @@ public class CouchDBDao implements IDatabaseDao {
 				answers.add(a);
 			}
 			return answers;
-			
 		} catch (UnsupportedEncodingException e) {
 			LOGGER.error("Error while retrieving freetext answers", e);
 		}
-		
 		return null;
 	}
 }
diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index dc5f7ebd245de090b819951ea719f5971871f85a..8d8f5870916f1c0b716322818151a79f2e20a0a3 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -73,5 +73,7 @@ public interface IDatabaseDao {
 
 	List<Answer> getFreetextAnswers(String sessionKey, String questionId);
 
-	int getActiveUsers(long since);
+	int countActiveUsers(long since);
+
+	int countActiveUsers(Session session, long since);
 }
diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java
index a25be2df53ac2772e2d1c6668d47ecbb0c9b4cd8..865fc2fcba651a786505d545ae484e56a2f8ed3b 100644
--- a/src/main/java/de/thm/arsnova/services/ISessionService.java
+++ b/src/main/java/de/thm/arsnova/services/ISessionService.java
@@ -37,4 +37,6 @@ public interface ISessionService {
 	List<Session> getMySessions(String username);
 
 	LoggedIn registerAsOnlineUser(User user, String sessionkey);
+
+	int countActiveUsers(String sessionkey);
 }
diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java
index d7e2a3ac45e13a51a91d4b8e1c90f5fb670c4b1c..c99377734bd47ae2a6dadfd3812f839244d94075 100644
--- a/src/main/java/de/thm/arsnova/services/SessionService.java
+++ b/src/main/java/de/thm/arsnova/services/SessionService.java
@@ -33,6 +33,8 @@ import de.thm.arsnova.entities.User;
 @Service
 public class SessionService implements ISessionService {
 
+	private static final int DURATION_IN_MILLIS = 3 * 60 * 1000;
+
 	@Autowired
 	private IDatabaseDao databaseDao;
 
@@ -92,4 +94,11 @@ public class SessionService implements ISessionService {
 
 		return databaseDao.registerAsOnlineUser(user, session);
 	}
+
+	@Override
+	public int countActiveUsers(String sessionkey) {
+		final long since = System.currentTimeMillis() - DURATION_IN_MILLIS;
+		Session session = databaseDao.getSessionFromKeyword(sessionkey);
+		return databaseDao.countActiveUsers(session, since);
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/services/StatisticsService.java b/src/main/java/de/thm/arsnova/services/StatisticsService.java
index 87c2e942eccbf9d384dafca9f4133776a53dd055..8b35fbf5598639e2fd7d31fcbd140f5c727b44af 100644
--- a/src/main/java/de/thm/arsnova/services/StatisticsService.java
+++ b/src/main/java/de/thm/arsnova/services/StatisticsService.java
@@ -16,6 +16,6 @@ public class StatisticsService implements IStatisticsService {
 	@Override
 	public final int countActiveUsers() {
 		long since = System.currentTimeMillis() - SINCEDURATION;
-		return databaseDao.getActiveUsers(since);
+		return databaseDao.countActiveUsers(since);
 	}
 }
diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
index 76b4f2b39b149536bec98667ff332588eefd2e02..817b4e7857f1abf4b875804bbe33d838fac0b29a 100644
--- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
+++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
@@ -236,7 +236,7 @@ public class StubDatabaseDao implements IDatabaseDao {
 	}
 	
 	@Override
-	public int getActiveUsers(long since) {
+	public int countActiveUsers(long since) {
 		return stubUsers.size();
 	}