diff options
| author | Arjun Roychowdhury <pliablepixels@gmail.com> | 2015-10-07 15:28:13 -0400 |
|---|---|---|
| committer | Arjun Roychowdhury <pliablepixels@gmail.com> | 2015-10-07 15:28:13 -0400 |
| commit | 41bef0dc67b4ec1437bedfee9efafd0aaeaedcdb (patch) | |
| tree | 43974514aeb51b94549a5b3ae55ce2b423fd4b80 /www/js/EventServer.js | |
| parent | 40fc4fc94ee0523aea1a36f8f6cf3acb4af0b599 (diff) | |
websockets for android
Diffstat (limited to 'www/js/EventServer.js')
| -rw-r--r-- | www/js/EventServer.js | 81 |
1 files changed, 62 insertions, 19 deletions
diff --git a/www/js/EventServer.js b/www/js/EventServer.js index 9e95adb2..57d4658b 100644 --- a/www/js/EventServer.js +++ b/www/js/EventServer.js @@ -9,50 +9,93 @@ angular.module('zmApp.controllers') .factory('EventServer', -[ 'ZMDataModel', '$rootScope','$websocket', function - ( ZMDataModel, $rootScope, $websocket) { +[ 'ZMDataModel', '$rootScope','$websocket', '$ionicPopup', function + ( ZMDataModel, $rootScope, $websocket, $ionicPopup) { + var websocketActive = 0; + var webSocketBadAuth = 0; + var ws; function start() { - if ($rootScope.websocketActive == 1) + if (websocketActive == 1) { ZMDataModel.zmDebug ("Connection established. Not doing WebSocketInit again..."); return; } + + if (webSocketBadAuth == 1) + { + webSocketBadAuth = 0; + ZMDataModel.zmLog("Retrying websocket auth"); + ws.$open(); + return; + } var loginData = ZMDataModel.getLogin(); if (loginData.eventServer) { - var evtsvrUrl=loginData.eventServer+'/?user='+ - loginData.username+'&passwd='+loginData.password; + var evtsvrUrl=loginData.eventServer; // if (ws) ws.$close(); - ZMDataModel.zmLog("Event Server URL constructed as " + evtsvrUrl); - var ws = $websocket.$new ({ - url:evtsvrUrl, - reconnect:true, - reconnectInterval:5000 - }); + + if (typeof ws === 'undefined' || ws.$status == ws.$CLOSED ) + { + ZMDataModel.zmLog ("%%%%%%%%%%%%%%%%%%%%%% NEW WEBSOCKET %%%%%%%%%%"); + //console.log (">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+ws.$status()); + ZMDataModel.zmLog("Event Server URL constructed as " + evtsvrUrl); + ws = $websocket.$new ({ + url:evtsvrUrl, + reconnect:true, + reconnectInterval:5000 + }); + } ws.$on ('$open', function() { ZMDataModel.zmLog("Websocket open"); - $rootScope.websocketActive=1; + ws.$emit('auth', + {user:loginData.username, + password:loginData.password}); + // we will retry on resume of app + // but since we called close, it won't retry on its own + websocketActive=0; }); ws.$on ('$close', function() { ZMDataModel.zmLog ("Websocket closed"); - $rootScope.websocketActive = 0; + websocketActive = 0; }); ws.$on ('$message', function(str) { - ZMDataModel.zmLog("Real-time event: " + str); - var evt=str.split(":"); - var evtStr = "New Alarm in " + evt[0]+" ("+evt[2]+")"; - ZMDataModel.displayBanner('alarm',[evtStr],6000,6000); - - + ZMDataModel.zmLog("Real-time event: " + JSON.stringify(str)); + if (str.status != 'Success') + { + ZMDataModel.zmLog ("Event Error: " + JSON.stringify(str)); + ws.$close(); + webSocketBadAuth = 1; + ZMDataModel.displayBanner('error',['Event server rejected credentials', 'Please re-check credentials'],2000,6000); + + } + if (str.status == 'Success' && str.events) // new events + { + var eventsToDisplay=[]; + for (var iter=0; iter<str.events.length; iter++) + { + eventsToDisplay.push(str.events[iter].Name+": new event ("+str.events[iter].EventId+")"); + + + } + // lets stack the display so they don't overwrite + if (eventsToDisplay.length > 0) + ZMDataModel.displayBanner('alarm', eventsToDisplay, 5000, 5000*eventsToDisplay.length); + $rootScope.isAlarm = 1; + } + + + + + }); } |
