[Groonga-commit] droonga/express-droonga at aba33a0 [master] Register and unregister socket as the subscriber for "watch.notification" message (workaround)

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index