2016-08-04 24 views
0

Ich bin mit zwei separaten node.js Prozesse. Man läuft Socket.IO und eine andere Express.js. Ich versuche, ein Ereignis von Express an den Server zu senden, der socket.io ausführt, aber mit socket.io-emitter erreicht ein Ereignis nur Sockets, die mit dem socket.io-Server verbunden sind. Was ich brauche, ist das gleiche Ereignis zu beobachten, das alle anderen Sockets empfangen, aber auf dem socket.io Server.Connect zu Socket.IO durch socket.io-Emitter

+0

Vielleicht sollte ich https://github.com/NodeRedis/node_redis verwenden? –

Antwort

0

I verwendet node_redis für die Interprozesskommunikation. Es gibt eine Publish/Subscribe-Funktion, die genau das ist, was ich wollte.

Es ist ein Beispiel, wie unten in https://github.com/NodeRedis/node_redis.

var redis = require("redis"); 
var sub = redis.createClient(), pub = redis.createClient(); 
var msg_count = 0; 

sub.on("subscribe", function (channel, count) { 
    pub.publish("a nice channel", "I am sending a message."); 
    pub.publish("a nice channel", "I am sending a second message."); 
    pub.publish("a nice channel", "I am sending my last message."); 
}); 

sub.on("message", function (channel, message) { 
    console.log("sub channel " + channel + ": " + message); 
    msg_count += 1; 
    if (msg_count === 3) { 
     sub.unsubscribe(); 
     sub.quit(); 
     pub.quit(); 
    } 
}); 

sub.subscribe("a nice channel");