diff --git a/lib/sse.js b/lib/sse.js index 44b0b3b..451b011 100644 --- a/lib/sse.js +++ b/lib/sse.js @@ -15,7 +15,8 @@ module.exports.Client = SSEClient; function SSE(httpServer, options) { options = new Options({ path : '/sse', - verifyRequest : null + verifyRequest : null, + verifyRequestPromise: null }).merge(options); this.server = httpServer; var oldListeners = this.server.listeners('request'); @@ -24,13 +25,30 @@ function SSE(httpServer, options) { this.server.on('request', function(req, res) { var u = url.parse(req.url); var pathname = u.pathname.replace(/^\/{2,}/, '/'); - if (self.matchesPath(pathname, options.value.path) && (options.value.verifyRequest == null || options.value.verifyRequest(req))) { - self.handleRequest(req, res, u.query); - } - else { - for (var i = 0, l = oldListeners.length; i < l; ++i) { - oldListeners[i].call(self.server, req, res); - } + if (self.matchesPath(pathname, options.value.path)) { + if (options.value.verifyRequestPromise == null) { + if (options.value.verifyRequest == null || options.value.verifyRequest(req)) { + self.handleRequest(req, res, u.query); + } else { + for (var i = 0, l = oldListeners.length; i < l; ++i) { + oldListeners[i].call(self.server, req, res); + } + } + } else { + options.value.verifyRequestPromise(req) + .then (function () { + self.handleRequest(req, res, u.query); + }) + .catch (function (e) { + for (var i = 0, l = oldListeners.length; i < l; ++i) { + oldListeners[i].call(self.server, req, res); + } + }); + } + } else { + for (var i = 0, l = oldListeners.length; i < l; ++i) { + oldListeners[i].call(self.server, req, res); + } } }); } diff --git a/package.json b/package.json index 627972f..e2f504f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "author": "Einar Otto Stangvik (http://2x.io)", - "name": "sse", - "version": "0.0.8", + "name": "fastx-sse", + "version": "0.0.9", "keywords": [ "real-time", "server-sent-events", @@ -11,7 +11,7 @@ ], "repository": { "type": "git", - "url": "git://github.com/einaros/sse.js.git" + "url": "git://github.com/cintolas/sse.js.git" }, "engines": { "node": ">=0.4.0"