node-upnp-subscription
Advanced tools
Comparing version 1.0.2 to 1.0.3
64
index.js
@@ -23,3 +23,5 @@ "use strict"; | ||
let emitter = subscriptions.get(sid); | ||
emitter.emit('message', { sid: sid, body: data }); | ||
if (emitter) { | ||
emitter.emit('message', { sid: sid, body: data }); | ||
} | ||
}); | ||
@@ -36,3 +38,2 @@ handle(req); | ||
timeoutSeconds = requestedTimeoutSeconds || 1800; | ||
events.EventEmitter.call(this); | ||
function resubscribe() { | ||
@@ -57,30 +58,3 @@ if (sid) { | ||
} | ||
function subscribe() { | ||
http.request({ | ||
host: host, | ||
port: port, | ||
path: eventSub, | ||
method: 'SUBSCRIBE', | ||
headers: { | ||
'CALLBACK': "<http://" + ip.address() + ':' + httpServerPort + ">", | ||
'NT': 'upnp:event', | ||
'TIMEOUT': 'Second-' + timeoutSeconds | ||
} | ||
}, function(res) { | ||
emitter.emit('subscribed', { sid: res.headers.sid }); | ||
sid = res.headers.sid; | ||
if (res.headers.timeout) { | ||
let subscriptionTimeout = res.headers.timeout.match(/\d+/); | ||
if (subscriptionTimeout) { | ||
timeoutSeconds = subscriptionTimeout[0]; | ||
} | ||
} | ||
resubscribeTimeout = setTimeout(resubscribe, (timeoutSeconds-1) * 1000); | ||
subscriptions.set(sid, emitter); | ||
}).on('error', function(e) { | ||
emitter.emit('error', e); | ||
subscriptions.delete(sid); | ||
}).end(); | ||
} | ||
this.unsubscribe = function unsubscribe() { | ||
function unsubscribe() { | ||
clearTimeout(resubscribeTimeout); | ||
@@ -105,6 +79,32 @@ if (sid) { | ||
subscriptions.delete(sid); | ||
}; | ||
subscribe(); | ||
} | ||
http.request({ | ||
host: host, | ||
port: port, | ||
path: eventSub, | ||
method: 'SUBSCRIBE', | ||
headers: { | ||
'CALLBACK': "<http://" + ip.address() + ':' + httpServerPort + ">", | ||
'NT': 'upnp:event', | ||
'TIMEOUT': 'Second-' + timeoutSeconds | ||
} | ||
}, function(res) { | ||
emitter.emit('subscribed', { sid: res.headers.sid }); | ||
sid = res.headers.sid; | ||
if (res.headers.timeout) { | ||
let subscriptionTimeout = res.headers.timeout.match(/\d+/); | ||
if (subscriptionTimeout) { | ||
timeoutSeconds = subscriptionTimeout[0]; | ||
} | ||
} | ||
resubscribeTimeout = setTimeout(resubscribe, (timeoutSeconds-1) * 1000); | ||
subscriptions.set(sid, emitter); | ||
}).on('error', function(e) { | ||
emitter.emit('error', e); | ||
subscriptions.delete(sid); | ||
}).end(); | ||
events.EventEmitter.call(this); | ||
this.unsubscribe = unsubscribe; | ||
} | ||
util.inherits(Subscription, events.EventEmitter); | ||
module.exports = Subscription; |
@@ -9,3 +9,3 @@ { | ||
"description": "Upnp subscription library for Node, handling subscription, renewal and expiry.", | ||
"version": "1.0.2", | ||
"version": "1.0.3", | ||
"main": "index.js", | ||
@@ -12,0 +12,0 @@ "directories": {}, |
22005