YUKI Hiroshi
null+****@clear*****
Thu Oct 17 17:55:55 JST 2013
YUKI Hiroshi 2013-10-17 17:55:55 +0900 (Thu, 17 Oct 2013) New Revision: aba33a0b20527381f7b0464801f1f90896ae5786 https://github.com/droonga/express-droonga/commit/aba33a0b20527381f7b0464801f1f90896ae5786 Message: Register and unregister socket as the subscriber for "watch.notification" message (workaround) Modified files: lib/adapter/socket.io.js Modified: lib/adapter/socket.io.js (+8 -5) =================================================================== --- lib/adapter/socket.io.js 2013-10-17 17:45:04 +0900 (ef91e95) +++ lib/adapter/socket.io.js 2013-10-17 17:55:55 +0900 (d66039f) @@ -156,7 +156,7 @@ exports.register = function(application, server, params) { if (!Array.isArray(subscribers)) subscribers = [subscribers]; subscribers.forEach(function(subscriber) { - subscriber.socket.emit('watch.notification', envelope.body); + subscriber.emit('watch.notification', envelope.body); }); }; connection.on('watch.notification', watchNotificationHandler); @@ -165,6 +165,8 @@ exports.register = function(application, server, params) { io.sockets.on('connection', function(socket) { application.emit('connection', socket); + var watchSubscriber = connection.getRouteToSelf({ sessionId: socket.id }); + registeredCommands.forEach(function(registeredCommand) { if (command.PublishSubscribe.isInstance(registeredCommand.definition)) { var subscribeEvent = registeredCommand.name + '.subscribe'; @@ -181,8 +183,8 @@ exports.register = function(application, server, params) { socket, { onResponse: function() { - if (!watchSubscribers[subscriber]) - watchSubscribers[subscriber] = socket; + if (!watchSubscribers[watchSubscriber]) + watchSubscribers[watchSubscriber] = socket; } } ) @@ -196,8 +198,8 @@ exports.register = function(application, server, params) { socket, { onResponse: function() { - if (watchSubscribers[subscriber]) - delete watchSubscribers[subscriber]; + if (watchSubscribers[watchSubscriber]) + delete watchSubscribers[watchSubscriber]; } } ) @@ -214,6 +216,7 @@ exports.register = function(application, server, params) { connection.on('error', errorHandler); socket.on('disconnect', function() { + delete watchSubscribers[watchSubscriber]; connection.removeListener('error', errorHandler); socket.removeAllListeners(); }); -------------- next part -------------- HTML����������������������������... Download