YUKI Hiroshi
null+****@clear*****
Wed Feb 13 18:10:16 JST 2013
YUKI Hiroshi 2013-02-13 18:10:16 +0900 (Wed, 13 Feb 2013) New Revision: 064a79dd24475221704a212c872f0d1f7cba1442 https://github.com/groonga/express-kotoumi/commit/064a79dd24475221704a212c872f0d1f7cba1442 Log: Remove listeners for publish events correctly Modified files: lib/frontend/socket.io-adaptor.js Modified: lib/frontend/socket.io-adaptor.js (+9 -1) =================================================================== --- lib/frontend/socket.io-adaptor.js 2013-02-13 18:03:05 +0900 (afe074e) +++ lib/frontend/socket.io-adaptor.js 2013-02-13 18:10:16 +0900 (107f7a7) @@ -116,7 +116,8 @@ exports.register = function(application, server, params) { io.sockets.on('connection', function(socket) { application.emit('connection', socket); - var messageHandlers = []; + var events = []; + var handlers = {}; registeredCommands.forEach(function(command) { socket.on(command.name, createClientMessageHandler(command.name, socket)); @@ -124,6 +125,8 @@ exports.register = function(application, server, params) { if (model.PublishSubscribe.isInstance(command.definition)) { var publishedMessageHandler = createPublishedMessageHandler(command.name, socket); connection.on(command.name, publishedMessageHandler); + events.push(command.name); + handlers[command.name] = publishedMessageHandler; } }); @@ -131,6 +134,11 @@ exports.register = function(application, server, params) { connection.on('error', errorHandler); socket.on('disconnect', function() { + events.forEach(function(event) { + connection.removeListener(event, handlers[event]); + }); + events = undefined; + handlers = undefined; connection.removeListener('error', errorHandler); socket.removeAllListeners(); }); -------------- next part -------------- HTML����������������������������...ダウンロード