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; }]);