From 6d814673cdf45ba6f8b675355fee2493031f2df0 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Sun, 4 Jan 2015 01:30:45 -0800 Subject: [PATCH] GUAC-977: Automatically disconnect all connections when window/tab is closed. --- .../app/client/services/guacClientManager.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/guacamole/src/main/webapp/app/client/services/guacClientManager.js b/guacamole/src/main/webapp/app/client/services/guacClientManager.js index fc5482708..c3d0e0f56 100644 --- a/guacamole/src/main/webapp/app/client/services/guacClientManager.js +++ b/guacamole/src/main/webapp/app/client/services/guacClientManager.js @@ -23,8 +23,14 @@ /** * A service for managing several active Guacamole clients. */ -angular.module('client').factory('guacClientManager', ['ManagedClient', - function guacClientManager(ManagedClient) { +angular.module('client').factory('guacClientManager', ['$injector', + function guacClientManager($injector) { + + // Required types + var ManagedClient = $injector.get('ManagedClient'); + + // Required services + var $window = $injector.get('$window'); var service = {}; @@ -121,6 +127,15 @@ angular.module('client').factory('guacClientManager', ['ManagedClient', }; + // Disconnect all clients when window is unloaded + $window.addEventListener('unload', function disconnectAllClients() { + + // Disconnect each managed client + for (var id in service.managedClients) + service.managedClients[id].client.disconnect(); + + }); + return service; }]);