YUKI Hiroshi
null+****@clear*****
Thu Aug 1 15:38:02 JST 2013
YUKI Hiroshi 2013-08-01 15:38:02 +0900 (Thu, 01 Aug 2013) New Revision: 8bc0de81bddf9b7d51ac8a1391bccb6af9b90f74 https://github.com/groonga/express-droonga/commit/8bc0de81bddf9b7d51ac8a1391bccb6af9b90f74 Message: Call "onSubscribed" handler for pubsub commands Modified files: lib/adapter/command.js lib/adapter/socket.io.js Modified: lib/adapter/command.js (+3 -0) =================================================================== --- lib/adapter/command.js 2013-08-01 15:15:19 +0900 (628bbf3) +++ lib/adapter/command.js 2013-08-01 15:38:02 +0900 (506ffaf) @@ -44,6 +44,9 @@ util.inherits(PublishSubscribe, Command); Object.defineProperty(PublishSubscribe.prototype, 'onSubscribe', { get: function() { return this._options.onSubscribe; } }); +Object.defineProperty(PublishSubscribe.prototype, 'onSubscribed', { + get: function() { return this._options.onSubscribed; } +}); Object.defineProperty(PublishSubscribe.prototype, 'onPublish', { get: function() { return this._options.onPublish; } }); Modified: lib/adapter/socket.io.js (+15 -12) =================================================================== --- lib/adapter/socket.io.js 2013-08-01 15:15:19 +0900 (1517d81) +++ lib/adapter/socket.io.js 2013-08-01 15:38:02 +0900 (445d9aa) @@ -43,10 +43,17 @@ exports.register = function(application, server, params) { var event = commandName; - var callback = null; + var requestHandler = 'onRequest'; + var responseHandler = 'onResponse'; + + if (command.PublishSubscribe.isInstance(commandDefinition)) { + event += '.subscribe'; + requestHandler = 'onSubscribe'; + responseHandler = 'onSubscribed'; + } + var options = {}; - if (command.RequestResponse.isInstance(commandDefinition)) { - callback = function(error, envelope) { + var callback = function(error, envelope) { if (error) { socket.emit('error', error); return; @@ -59,9 +66,9 @@ exports.register = function(application, server, params) { if (clientOptions.responseEvent) responseEvent = clientOptions.responseEvent; - if (commandDefinition.onResponse) { + if (commandDefinition[responseHandler]) { try { - commandDefinition.onResponse(responseData, wrappedSocket); + commandDefinition[responseHandler](responseData, wrappedSocket); } catch(error) { wrappedSocket.emit('error', error.message || error); } @@ -70,17 +77,13 @@ exports.register = function(application, server, params) { wrappedSocket.destroy(); } }; - options.timeout = DEFAULT_TIMEOUT; - } else if (command.PublishSubscribe.isInstance(commandDefinition)) { - event += '.subscribe'; - } - + options.timeout = DEFAULT_TIMEOUT; options.sessionId = socket.id; var wrappedConection = new wrapper.DroongaProtocolConnectionWrapper(connection, callback, options); - if (commandDefinition.onRequest) { + if (commandDefinition[requestHandler]) { try { - commandDefinition.onRequest(data, wrappedConection); + commandDefinition[requestHandler](data, wrappedConection); } catch(error) { wrappedConection.destroy(); socket.emit('error', error.message || error); -------------- next part -------------- HTML����������������������������... Download