2015-09-02 35 views
0

为什么我不能在Node Redis中使用PubSub模式设计进行回调?PubSub上的节点Redis回调

例如:

server.publish("someChanel", someData, function(response) { 
    // response should come back from client 
}); 

client.on('message', function(channel, data, callback) { 
    // Do stuff with data 
    // Return data to callback 
    callback(someNewData); 
}); 

callback没有定义,这显然会失败。

+0

用你的范围。 –

+0

@JamesSumners更详细的答案赞赏 – Kousha

+0

把你的“回调”在消息事件处理程序的父上下文中 - https://github.com/getify/You-Dont-Know-JS/blob/master/scope% 20&%20closures/README.md#you-dont-know-js-scope --closedures –

回答

0

redis连接会发出事件,所以当你每次登录client.on('message'时都会有一条消息,function(channel, data)会触发。在该功能内部,您可以执行任何操作,包括调用其他功能。

E.g

function YourCallBackFn (err, data) { 
    // do something with data 
} 

server.publish("someChanel", someData, function(response) { 
    // response should come back from client 
}); 

client.on('message', function(channel, data) { 
    // Do stuff with data 
    // Return data to callback 
    YourCallBackFn(null, data); 
}); 
+0

这不是我要求的。我想要在另一台计算机上运行的“服务器”来接收回调 – Kousha

+0

Pub/sub不起作用。 –

+0

好吧,这就是我的想法。我需要在两个不同的服务器之间进行双向通信。我有什么选择? – Kousha