diff --git a/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java b/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java
new file mode 100644
index 0000000000000000000000000000000000000000..a54a912746fbc836bb833c71a0f0526c410df01f
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java
@@ -0,0 +1,59 @@
+package de.thm.arsnova.aop;
+
+import java.util.UUID;
+
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.Aspect;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import de.thm.arsnova.controller.SessionController;
+import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.services.IUserService;
+import de.thm.arsnova.services.UserSessionService;
+
+@Aspect
+public class UserSessionAspect {
+
+	public static final Logger LOGGER = LoggerFactory.getLogger(SessionController.class);
+	
+	@Autowired
+	private UserSessionService userSessionService;
+	
+	@Autowired
+	private IUserService userService;
+	
+	/** Sets current user and ARSnova session in session scoped UserSessionService 
+	 * 
+	 * @param jp
+	 * @param keyword
+	 * @param session
+	 */
+	@AfterReturning(
+		pointcut="execution(public * de.thm.arsnova.services.SessionService.joinSession(..)) && args(keyword)",
+		returning="session"
+	)
+	public final void joinSessionAdvice(final JoinPoint jp, final String keyword, final Session session) {
+		userSessionService.setUser(userService.getCurrentUser());
+		userSessionService.setSession(session);
+	}
+	
+	/** Sets current user, ARSnova session and websocket session ID in session scoped UserSessionService 
+	 * 
+	 * @param jp
+	 * @param keyword
+	 * @param socketId
+	 * @param session
+	 */
+	@AfterReturning(
+		pointcut="execution(public * de.thm.arsnova.services.SessionService.joinSession(..)) && args(keyword, socketId)",
+		returning="session"
+	)
+	public final void joinSessionAdviceWithWebsocket(final JoinPoint jp, final String keyword, final UUID socketId, final Session session) {
+		userSessionService.setUser(userService.getCurrentUser());
+		userSessionService.setSession(session);
+		userSessionService.setSocketId(socketId);
+	}
+}
diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java
index 59b9e529b7edc209bbfa2ad541e6a6a21aabfa0f..ecdb8b5f77a42980993451b6b5c001153d521bbb 100644
--- a/src/main/java/de/thm/arsnova/controller/SessionController.java
+++ b/src/main/java/de/thm/arsnova/controller/SessionController.java
@@ -43,7 +43,6 @@ import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.services.ISessionService;
 import de.thm.arsnova.services.IUserService;
-import de.thm.arsnova.services.UserSessionService;
 import de.thm.arsnova.services.SessionService.SessionNameComperator;
 import de.thm.arsnova.services.SessionService.SessionShortNameComperator;
 
@@ -59,15 +58,10 @@ public class SessionController extends AbstractController {
 	@Autowired
 	private IUserService userService;
 
-	@Autowired
-	private UserSessionService userSessionService;
-
 	@RequestMapping(value = "/{sessionkey}", method = RequestMethod.GET)
 	@ResponseBody
 	public final Session joinSession(@PathVariable final String sessionkey) {
 		Session session = sessionService.joinSession(sessionkey);
-		userSessionService.setUser(userService.getCurrentUser());
-		userSessionService.setSession(session);
 		return session;
 	}
 
diff --git a/src/main/java/de/thm/arsnova/services/UserSessionService.java b/src/main/java/de/thm/arsnova/services/UserSessionService.java
index ea5b096836602038cb602d2288c71d13f6272682..d26a8f181cbf18e5d279c9ed0574958870c8bdf2 100644
--- a/src/main/java/de/thm/arsnova/services/UserSessionService.java
+++ b/src/main/java/de/thm/arsnova/services/UserSessionService.java
@@ -1,5 +1,7 @@
 package de.thm.arsnova.services;
 
+import java.util.UUID;
+
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
 
@@ -11,4 +13,6 @@ public interface UserSessionService {
 	void setSession(Session session);
 	Session getSession();
 	
+	void setSocketId(UUID socketId);
+	UUID getSocketId();
 }
\ No newline at end of file
diff --git a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java
index a340bfb723cea256302ef7ba78fbb925c1a9f1fc..69a51cae619e7eefe773167e9e2af7a476c1924d 100644
--- a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java
@@ -1,5 +1,7 @@
 package de.thm.arsnova.services;
 
+import java.util.UUID;
+
 import org.springframework.context.annotation.Scope;
 import org.springframework.context.annotation.ScopedProxyMode;
 import org.springframework.stereotype.Component;
@@ -13,6 +15,7 @@ public class UserSessionServiceImpl implements UserSessionService {
 	
 	private User user;
 	private Session session;
+	private UUID socketId;
 	
 	@Override
 	public void setUser(User u) {
@@ -33,4 +36,14 @@ public class UserSessionServiceImpl implements UserSessionService {
 	public Session getSession() {
 		return this.session;
 	}
+	
+	@Override
+	public void setSocketId(UUID sId) {
+		this.socketId = sId;
+	}
+	
+	@Override
+	public UUID getSocketId() {
+		return this.socketId;
+	}
 }
diff --git a/src/main/webapp/WEB-INF/spring/arsnova-servlet.xml b/src/main/webapp/WEB-INF/spring/arsnova-servlet.xml
index 0026ff2470c7f87a991ab1df943470672f0e50ad..e0e455c07fa09db1ab3df50a02006185dea988e1 100644
--- a/src/main/webapp/WEB-INF/spring/arsnova-servlet.xml
+++ b/src/main/webapp/WEB-INF/spring/arsnova-servlet.xml
@@ -24,10 +24,6 @@
 	        </value>
 	    </property>
 	</bean>
-	
-	<aop:aspectj-autoproxy>
-		<aop:include name="authorizationAdviser" />
-	</aop:aspectj-autoproxy>
 
 	<mvc:annotation-driven />
 	<mvc:resources mapping="/**" location="/" />
diff --git a/src/main/webapp/WEB-INF/spring/spring-main.xml b/src/main/webapp/WEB-INF/spring/spring-main.xml
index d97cf9c9b46f5bf3c504ad6b131fb06bbbe66ab7..410ed279551709734157bd4478cafd261261919a 100644
--- a/src/main/webapp/WEB-INF/spring/spring-main.xml
+++ b/src/main/webapp/WEB-INF/spring/spring-main.xml
@@ -33,6 +33,11 @@
 	<context:annotation-config />
 
 	<task:annotation-driven />
+	
+	<aop:aspectj-autoproxy>
+		<aop:include name="authorizationAdviser" />
+		<aop:include name="userSessionAspect" />
+	</aop:aspectj-autoproxy>
 
 	<bean id="socketServer" class="de.thm.arsnova.socket.ARSnovaSocketIOServer"
 		init-method="startServer" destroy-method="stopServer" scope="singleton"
@@ -42,6 +47,8 @@
 	<bean id="authorizationAdviser" class="de.thm.arsnova.aop.AuthorizationAdviser">
 		<property name="userService" ref="userService" />
 	</bean>
+	
+	<bean id="userSessionAspect" class="de.thm.arsnova.aop.UserSessionAspect" />
 
 	<bean id="userService" scope="singleton" class="de.thm.arsnova.services.UserService" />