From 8754c0c7ee04abc7fcbceedbd3c261674a8afd79 Mon Sep 17 00:00:00 2001
From: Daniel Gerhardt <daniel.gerhardt@mni.thm.de>
Date: Sat, 9 Mar 2013 10:39:08 +0100
Subject: [PATCH] Fix: Feedback data is no longer sent twice via Socket.IO. As
 a side effect this should smooth the chart animation in arsnova-js. Added
 some comments concerning code for legacy HTTP polling support.

---
 .../java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java  | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
index f2bfc1ed..ebc9ad8a 100644
--- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
+++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
@@ -95,8 +95,9 @@ public class ARSnovaSocketIOServer {
 
 				/**
 				 * send feedback back to clients
+				 * disabled since broadcast is already called in feedbackService.saveFeedback
 				 */
-				reportUpdatedFeedbackForSession(data.getSessionkey());
+				//reportUpdatedFeedbackForSession(data.getSessionkey());
 			}
 		});
 
@@ -104,6 +105,8 @@ public class ARSnovaSocketIOServer {
 			@Override
 			public void onData(SocketIOClient client, Session session, AckRequest ackSender) {
 				sessionService.joinSession(session.getKeyword(), client.getSessionId());
+				/* active user count has to be sent to the client since the broadcast is
+				 * not always sent as long as the polling solution is active simultaneously */
 				reportActiveUserCountForSession(session.getKeyword());
 				reportSessionDataToClient(session.getKeyword(), client);
 			}
@@ -236,11 +239,13 @@ 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);
 		if (count == lastActiveUserCount) {
 			return;
 		}
 		lastActiveUserCount = count;
+
 		broadcastInSession(sessionKey, "updateActiveUserCount", count);
 	}
 
-- 
GitLab