2015-09-02 100 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