summaryrefslogtreecommitdiff
path: root/www/js/EventServer.js
diff options
context:
space:
mode:
authorArjun Roychowdhury <pliablepixels@gmail.com>2015-10-07 15:28:13 -0400
committerArjun Roychowdhury <pliablepixels@gmail.com>2015-10-07 15:28:13 -0400
commit41bef0dc67b4ec1437bedfee9efafd0aaeaedcdb (patch)
tree43974514aeb51b94549a5b3ae55ce2b423fd4b80 /www/js/EventServer.js
parent40fc4fc94ee0523aea1a36f8f6cf3acb4af0b599 (diff)
websockets for android
Diffstat (limited to 'www/js/EventServer.js')
-rw-r--r--www/js/EventServer.js81
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;
+ }
+
+
+
+
+
});
}