@@ -87,6 +87,20 @@ class Arlo extends EventEmitter {
87
87
} . bind ( this )
88
88
) ;
89
89
}
90
+
91
+ keepAlive = true
92
+ async loginAndKeepAlive ( user , password , callback , heartbeat = 30000 ) {
93
+ let msLastResponse = 0 ;
94
+ this . addListener ( Constants . EVENT_MESSAGE , ( ) =>
95
+ msLastResponse = new Date ( ) ) ;
96
+ while ( this . keepAlive ) {
97
+ if ( new Date ( ) - msLastResponse > heartbeat )
98
+ this . login ( user , password , callback ) ;
99
+ else if ( this . token )
100
+ this . getDevices ( ) ;
101
+ await new Promise ( resolve => setTimeout ( resolve , heartbeat ) ) ;
102
+ }
103
+ }
90
104
91
105
subscribe ( callback ) {
92
106
let reCamera = / c a m e r a s \/ ( .+ ) $ / ;
@@ -113,7 +127,7 @@ class Arlo extends EventEmitter {
113
127
}
114
128
115
129
data = msg . data ;
116
-
130
+ this . emit ( Constants . EVENT_MESSAGE , data ) ;
117
131
switch ( data . resource ) {
118
132
case Constants . RESOURCE_CAMERAS :
119
133
for ( let i = 0 ; i < msg . data . properties . length ; i ++ ) {
@@ -342,6 +356,7 @@ Arlo.CHARGING = Constants.EVENT_CHARGING;
342
356
Arlo . FOUND = Constants . EVENT_FOUND ;
343
357
Arlo . MOTION = Constants . EVENT_MOTION ;
344
358
Arlo . UPDATE = Constants . EVENT_UPDATE ;
359
+ Arlo . MESSAGE = Constants . EVENT_MESSAGE ;
345
360
346
361
Arlo . FF_SNAPSHOT = Constants . FF_SNAPSHOT_AVAILABLE ;
347
362
0 commit comments