Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningWebsocketServer.java =================================================================== diff -u -r5773f84ed608838de3521ecde87c52f3c72d478c -rd99ea45728271c1c5125fe468d61c99fa7d5f8a8 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningWebsocketServer.java (.../LearningWebsocketServer.java) (revision 5773f84ed608838de3521ecde87c52f3c72d478c) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningWebsocketServer.java (.../LearningWebsocketServer.java) (revision d99ea45728271c1c5125fe468d61c99fa7d5f8a8) @@ -213,18 +213,21 @@ * The leader finished the activity. Non-leaders will have Finish button displayed. */ static void sendCloseRequest(Long toolSessionId) throws JSONException, IOException { - JSONObject responseJSON = new JSONObject(); - responseJSON.put("close", true); - String response = responseJSON.toString(); - Set sessionWebsockets = LearningWebsocketServer.websockets.get(toolSessionId); if (sessionWebsockets == null) { return; } // make a copy of the websocket collection so it does not get blocked while sending messages sessionWebsockets = new HashSet(sessionWebsockets); + + JSONObject responseJSON = new JSONObject(); + responseJSON.put("close", true); + String response = responseJSON.toString(); + for (Session websocket : sessionWebsockets) { - websocket.getBasicRemote().sendText(response); + if (websocket.isOpen()) { + websocket.getBasicRemote().sendText(response); + } } }