Index: lams_tool_leader/web/pages/learning/leaderselection.jsp
===================================================================
diff -u -rfe19797ec82718905555353176ed719bec11043e -r9496ff3ffe5e98272f7939a2cf4e8c6dbb2901f7
--- lams_tool_leader/web/pages/learning/leaderselection.jsp (.../leaderselection.jsp) (revision fe19797ec82718905555353176ed719bec11043e)
+++ lams_tool_leader/web/pages/learning/leaderselection.jsp (.../leaderselection.jsp) (revision 9496ff3ffe5e98272f7939a2cf4e8c6dbb2901f7)
@@ -35,6 +35,27 @@
show: ${isSelectLeaderActive},
keyboard: true
});
+
+ let websocket = initWebsocket('leaderSelection${toolSessionID}',
+ ''.replace('http', 'ws')
+ + 'learningWebsocket?toolSessionID=${toolSessionID}');
+
+ if (websocket) {
+ // when the server pushes new inputs
+ websocket.onmessage = function (e) {
+ // no need to reset ping timer as the only possible message is page refresh
+
+ // create JSON object
+ var input = JSON.parse(e.data);
+
+ // The leader has just been selected and all non-leaders should refresh their pages in order
+ // to see new leader's name and a Finish button.
+ if (input.pageRefresh) {
+ location.reload();
+ return;
+ }
+ };
+ }
});
function leaderSelection() {
@@ -52,54 +73,6 @@
function finishActivity(){
location.href = '';
}
-
- //init the connection with server using server URL but with different protocol
- var leaderWebsocketInitTime = Date.now(),
- leaderWebsocket = new WebSocket(''.replace('http', 'ws')
- + 'learningWebsocket?toolSessionID=' + ${toolSessionID}),
- leaderWebsocketPingTimeout = null,
- leaderWebsocketPingFunc = null;
-
- leaderWebsocket.onclose = function(e){
- // react only on abnormal close
- if (e.code === 1006 &&
- Date.now() - leaderWebsocketInitTime > 1000) {
- location.reload();
- }
- };
-
- leaderWebsocketPingFunc = function(skipPing){
- if (leaderWebsocket.readyState == leaderWebsocket.CLOSING
- || leaderWebsocket.readyState == leaderWebsocket.CLOSED){
- return;
- }
-
- // check and ping every 3 minutes
- leaderWebsocketPingTimeout = setTimeout(leaderWebsocketPingFunc, 3*60*1000);
- // initial set up does not send ping
- if (!skipPing) {
- leaderWebsocket.send("ping");
- }
- };
-
- // set up timer for the first time
- leaderWebsocketPingFunc(true);
-
-
- // run when the leader has just been selected
- leaderWebsocket.onmessage = function(e) {
- // no need to reset ping timer as the only possible message is page refresh
-
- // create JSON object
- var input = JSON.parse(e.data);
-
- // The leader has just been selected and all non-leaders should refresh their pages in order
- // to see new leader's name and a Finish button.
- if (input.pageRefresh) {
- location.reload();
- return;
- }
- };