2016-07-10 4 views
0

ich einen Weg entwickelt habe zwei separate Dienste, um eine Pub/Sub-Kanal mit Redis comunicate verwendet wird, ist dies der Hauptteil des Codes:Wie Parameter an ein NodeJS Ereignis befestigen emmiter

var Intercom = (function() { 
    var _event = new events.EventEmitter(); 

    listener.subscribe("intercom"); 
    listener.on("message", function(channel, message) { 
     try { 
      var data = JSON.parse(message); 
      _event.emit(data.controller, data.payload); 
     } 
     catch (e) {} 

    }); 

    return { 
     on: function (evt, callback) { 
      _event.on(evt, callback); 
     }, 
     emit: function (controller, payload) { 
      try { 
       sender.publish("intercom", JSON.stringify({ controller: controller, payload: payload})); 
      } 
      catch (e) {} 
     } 

    } 
})(); 

Ich benutze es auf der Haupt-App nur durch: intercom.on('hook', hookController.main); Wie Sie sehen können, wenn die Abfrage "hook" ist, wird die main() -Funktion von hookController aufgerufen. Es ist ein sehr Expressy-ähnlicher Ansatz.

Die hookController hat eine sehr einfache Sache:

exports.main = function(req) { 
    console.log(req); 
} 

Es ist nicht ganz klar zu meinen, wie der Parameter „REQ“ wird zur Haupt geführt zu werden(), und wahrscheinlich wegen meiner Unverständnis darüber Ich kann es nicht herausfinden, wie man einen anderen Parameter an die Hauptanwendung übergibt, so etwas wie:

Antwort

1

Ich fand einen Weg es zu tun;

var foo = 'bar'; 
intercom.on('hook', function(req) { hookController.main(req, foo) }); 

Es ist ein bisschen hässlich.

Verwandte Themen