[Groonga-commit] groonga/express-kotoumi [master] Remove listeners for publish events correctly

アーカイブの一覧に戻る

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����������������������������...
ダウンロード 



More information about the Groonga-commit mailing list
アーカイブの一覧に戻る