使用Express和Redis进行异步调用

时间:2011-06-10 15:52:09

标签: node.js redis express publish-subscribe

我正在使用Redis Pub / Sub将消息从Node.js传输到后端服务器。

问题是如何在快速响应中访问订阅者消息事件中的消息。这是我应该用中间件处理的东西吗?或者是否有更简单的异步回调方式?

以下是我所说的基本示例:

subscriber.on("message", function (channel, message) {
    console.log("received: " + channel + ": " + message);
});

server.get('/', function(req, res){
    publisher.publish(server.uuid, server.uuid + ": message here");
    res.send(message);
});

更新

通过将带有id的响应对象传递给异步队列解决了我自己的问题。

1 个答案:

答案 0 :(得分:2)

我对node.js只有很少的经验,但是类似于以下的东西会起作用。我认为您只需要使用包含服务器识别的模式中的消息的请求来命中服务器。在以下示例中,请求为http://yoursite.com/msg/ some_msg_here

var http = require('http');
var site = http.createClient('127.0.0.1', 80);

subscriber.on("message", function(channel, message)) {
    var req = site.request("GET", "/msg/" + message, {'host': '127.0.0.1'});
    req.end();
}

server.get('/msg', function(req, res){
    var msg = req.params.msg;
    publisher.publish(server.uuid, server.uuid + ": " + msg;
    res.send(msg);

如果不是最终的解决方案,希望有助于作为起点。