Browse code

another xhr update with timeout

louis authored on23/06/2022 11:37:01
Showing1 changed files
... ...
@@ -28,6 +28,7 @@ function authenticate() {
28 28
     
29 29
     xhr.onload = function () {
30 30
       if (xhr.readyState === 4) {
31
+        retry=0;
31 32
         console.log('------authentication request returned');
32 33
         if(xhr.status == 200) {
33 34
           response = JSON.parse(xhr.responseText);
... ...
@@ -69,11 +70,11 @@ function authenticate() {
69 70
         authenticate();
70 71
       }else{
71 72
         console.log('------Authentication timed out a second time');
72
-	//send back "timeout" to watch
73
-	auth="";
74
-	message ="Authentication timed out, verify settings and connectivity";
73
+        //send back "timeout" to watch
74
+        auth="";
75
+        message ="Authentication timed out, verify settings and connectivity";
75 76
 
76
-	// Build message
77
+        // Build message
77 78
         var dict = {
78 79
           'auth': message,
79 80
         };
... ...
@@ -105,30 +106,62 @@ function get_status() {
105 106
       var server=localStorage.getItem('server');
106 107
       url = server + "/webapi/entry.cgi?api=SYNO.SurveillanceStation.HomeMode&version=1&method=GetInfo&_sid="+sid;
107 108
       var xhr = new XMLHttpRequest();
109
+      xhr.timeout = 3000; // time in milliseconds
108 110
 
109
-      xhr.open("GET", url,false);
110
-      xhr.send();
111
+      xhr.open("GET", url,true);
111 112
 
112
-      if(xhr.status == 200) {
113
-        response = JSON.parse(xhr.responseText);
114
-        if (response.success == true){
115
-          status=response.data.on;   
116
-          var message;
117
-          switch (status) {
118
-            case true:
119
-              message = "Your Home mode is ON";
120
-              break;
121
-            case false:
122
-              message = "Your Home mode is OFF";
123
-              break;
124
-            default:
125
-              message = "home mode is unknown !";
126
-          }      
113
+      xhr.onload = function () {
114
+        if (xhr.readyState === 4) {
115
+          retry=0;
116
+          console.log('------Get-status request returned');
117
+          if(xhr.status == 200) {
118
+            response = JSON.parse(xhr.responseText);
119
+            if (response.success == true){
120
+              status=response.data.on;   
121
+              var message;
122
+              switch (status) {
123
+                case true:
124
+                  message = "Your Home mode is ON";
125
+                  break;
126
+                case false:
127
+                  message = "Your Home mode is OFF";
128
+                  break;
129
+                default:
130
+                  message = "home mode is unknown !";
131
+              }      
132
+              // Build message
133
+              var dict = {
134
+                'status': message,
135
+              };
136
+            
137
+              // Send the message
138
+              Pebble.sendAppMessage(dict, function(e) {
139
+                console.log('sent');
140
+              }, function() {
141
+                console.log('failed');
142
+              });
143
+            }
144
+          }else {
145
+            console.log('------Request returned error code ' + xhr.status);
146
+          }
147
+        }
148
+      }
149
+
150
+      xhr.ontimeout = function (e){
151
+        retry++;
152
+        if (retry<=1){
153
+          console.log('------Get-Status timed out retrying another time ');
154
+          get_status();
155
+        }else{
156
+          console.log('------Get-Status timed out a second time');
157
+          //send back "timeout" to watch
158
+          message ="Get-Status timed out, verify settings and connectivity";
159
+  
127 160
           // Build message
128 161
           var dict = {
129 162
             'status': message,
130 163
           };
131
-        
164
+  
132 165
           // Send the message
133 166
           Pebble.sendAppMessage(dict, function(e) {
134 167
             console.log('sent');
... ...
@@ -136,9 +169,11 @@ function get_status() {
136 169
             console.log('failed');
137 170
           });
138 171
         }
139
-      }else {
140
-        console.log('------Request returned error code ' + xhr.status.toString());
141 172
       }
173
+
174
+      xhr.send();
175
+
176
+      
142 177
     }else{
143 178
       Pebble.showSimpleNotificationOnPebble("DSCam H-S", "You need to set your Synology account and server.");
144 179
     }
... ...
@@ -272,3 +307,4 @@ Pebble.addEventListener('appmessage', function(e) {
272 307
   }
273 308
   
274 309
 });
310
+