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