mirror of
https://github.com/ansible/awx.git
synced 2026-02-15 10:10:01 -03:30
adding disconnect function for logging out
and adding ability to specify `socket: null` for a route definition, in order to specify a state that should not subscribe/unsubscribe at all (for login state).
This commit is contained in:
@@ -65,6 +65,7 @@ export default
|
||||
|
||||
var x,
|
||||
ConfigService = $injector.get('ConfigService'),
|
||||
SocketService = $injector.get('SocketService'),
|
||||
scope = angular.element(document.getElementById('main-view')).scope();
|
||||
|
||||
if(scope){
|
||||
@@ -94,6 +95,7 @@ export default
|
||||
$rootScope.lastUser = $cookieStore.get('current_user').id;
|
||||
}
|
||||
ConfigService.delete();
|
||||
SocketService.disconnect();
|
||||
$cookieStore.remove('token_expires');
|
||||
$cookieStore.remove('current_user');
|
||||
$cookieStore.remove('token');
|
||||
|
||||
@@ -9,6 +9,7 @@ import {templateUrl} from '../shared/template-url/template-url.factory';
|
||||
export default {
|
||||
name: 'signIn',
|
||||
route: '/login',
|
||||
socket: null,
|
||||
templateUrl: templateUrl('login/loginBackDrop'),
|
||||
resolve: {
|
||||
obj: ['$rootScope', 'Authorization',
|
||||
|
||||
@@ -17,7 +17,6 @@ export default
|
||||
$log.debug('Socket connecting to: ' + url);
|
||||
|
||||
self.socket = new ReconnectingWebSocket(url, null, {
|
||||
// debug: true,
|
||||
timeoutInterval: 3000,
|
||||
maxReconnectAttempts: 10
|
||||
});
|
||||
@@ -31,6 +30,10 @@ export default
|
||||
$log.debug('Error Logged: ' + error); //log errors
|
||||
};
|
||||
|
||||
self.socket.onclose = function (error) {
|
||||
$log.debug('Websocket Disconnected.');
|
||||
};
|
||||
|
||||
self.socket.onmessage = function (e) {
|
||||
$log.debug('Received From Server: ' + e.data);
|
||||
var data = JSON.parse(e.data), str = "";
|
||||
@@ -59,56 +62,6 @@ export default
|
||||
str = `${$state.current.name}-${data.group_name}`;
|
||||
}
|
||||
$rootScope.$emit(str, data);
|
||||
// if(data.group_name==="jobs"){
|
||||
//
|
||||
// if (!('status' in data)){
|
||||
// // we know that this must have been a
|
||||
// // summary complete message
|
||||
// $log.debug('Job summary_complete ' + data.unified_job_id);
|
||||
// $rootScope.$emit('JobSummaryComplete', data);
|
||||
// }
|
||||
//
|
||||
// if ($state.is('jobs')) {
|
||||
// $rootScope.$emit('JobStatusChange-jobs', data);
|
||||
// }
|
||||
// else if ($state.includes('jobDetail') ||
|
||||
// $state.is('adHocJobStdout') ||
|
||||
// $state.is('inventorySyncStdout') ||
|
||||
// $state.is('managementJobStdout') ||
|
||||
// $state.is('scmUpdateStdout')) {
|
||||
//
|
||||
// $log.debug("sending status to standard out");
|
||||
// $rootScope.$emit('JobStatusChange-jobStdout', data);
|
||||
// }
|
||||
// if ($state.includes('jobDetail')) {
|
||||
// $rootScope.$emit('JobStatusChange-jobDetails', data);
|
||||
// } else if ($state.is('dashboard')) {
|
||||
// $rootScope.$emit('JobStatusChange-home', data);
|
||||
// } else if ($state.is('portalMode')) {
|
||||
// $rootScope.$emit('JobStatusChange-portal', data);
|
||||
// } else if ($state.is('projects')) {
|
||||
// $rootScope.$emit('JobStatusChange-projects', data);
|
||||
// } else if ($state.is('inventoryManage') ||
|
||||
// $state.includes('inventoryManage')) {
|
||||
// $rootScope.$emit('JobStatusChange-inventory', data);
|
||||
// }
|
||||
// }
|
||||
// if(data.group_name==="job_events"){
|
||||
// $rootScope.$emit('job_events-'+data.job, data);
|
||||
// }
|
||||
// if(data.group_name==="schedules"){
|
||||
// $log.debug('Schedule ' + data.unified_job_id + ' status changed to ' + data.status);
|
||||
// $rootScope.$emit('ScheduleStatusChange', data);
|
||||
// }
|
||||
// if(data.group_name==="ad_hoc_command_events"){
|
||||
// $rootScope.$emit('ad_hoc_command_events-'+data.ad_hoc_command, data);
|
||||
// }
|
||||
// if(data.group_name==="control"){
|
||||
// $log.debug(data.reason);
|
||||
// $rootScope.sessionTimer.expireSession('session_limit');
|
||||
// $state.go('signOut');
|
||||
// }
|
||||
|
||||
return self.socket;
|
||||
|
||||
};
|
||||
@@ -125,6 +78,9 @@ export default
|
||||
$log.debug('socket status: ' + $rootScope.socketStatus);
|
||||
}, 2000);
|
||||
},
|
||||
disconnect: function(){
|
||||
this.socket.close();
|
||||
},
|
||||
subscribe: function(state){
|
||||
console.log("Next state: " + state.name);
|
||||
this.emit(JSON.stringify(state.socket));
|
||||
@@ -156,7 +112,6 @@ export default
|
||||
}
|
||||
},
|
||||
checkStatus: function() {
|
||||
|
||||
function getSocketTip(status) {
|
||||
var result = '';
|
||||
switch(status) {
|
||||
|
||||
@@ -2,35 +2,35 @@ export default function($stateProvider) {
|
||||
this.$get = function() {
|
||||
return {
|
||||
addSocket: function(state){
|
||||
if(!state.resolve){
|
||||
state.resolve = {};
|
||||
if(state.socket!==null){
|
||||
if(!state.resolve){
|
||||
state.resolve = {};
|
||||
}
|
||||
state.resolve.socket = ['SocketService', '$rootScope', '$stateParams',
|
||||
function(SocketService, $rootScope, $stateParams) {
|
||||
$rootScope.socketPromise.promise.then(function(){
|
||||
if(!state.socket){
|
||||
state.socket = {groups: {}};
|
||||
SocketService.unsubscribe(state);
|
||||
}
|
||||
else{
|
||||
if(state.socket.groups.hasOwnProperty( "job_events")){
|
||||
state.socket.groups.job_events = [$stateParams.id];
|
||||
}
|
||||
if(state.socket.groups.hasOwnProperty( "ad_hoc_command_events")){
|
||||
state.socket.groups.ad_hoc_command_events = [$stateParams.id];
|
||||
}
|
||||
SocketService.subscribe(state);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}];
|
||||
}
|
||||
state.resolve.socket = ['SocketService', '$rootScope', '$stateParams',
|
||||
function(SocketService, $rootScope, $stateParams) {
|
||||
$rootScope.socketPromise.promise.then(function(){
|
||||
if(!state.socket){
|
||||
state.socket = {groups: {}};
|
||||
SocketService.unsubscribe(state);
|
||||
}
|
||||
else{
|
||||
if(state.socket.groups.hasOwnProperty( "job_events")){
|
||||
state.socket.groups.job_events = [$stateParams.id];
|
||||
}
|
||||
if(state.socket.groups.hasOwnProperty( "ad_hoc_command_events")){
|
||||
state.socket.groups.ad_hoc_command_events = [$stateParams.id];
|
||||
}
|
||||
SocketService.subscribe(state);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}];
|
||||
},
|
||||
|
||||
addState: function(state) {
|
||||
var route = state.route || state.url;
|
||||
|
||||
this.addSocket(state);
|
||||
|
||||
$stateProvider.state(state.name, {
|
||||
url: route,
|
||||
controller: state.controller,
|
||||
|
||||
Reference in New Issue
Block a user