Асинхронный вызов с Express и Redis - PullRequest
2 голосов
/ 10 июня 2011

Я работаю с 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);
});

Обновление:

Решил мою собственную проблему, передав объект ответас идентификатором в асинхронную очередь.

1 Ответ

2 голосов
/ 11 июня 2011

У меня только небольшой опыт работы с 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);

Надеюсь, что это поможет в качестве отправной точки, если не окончательное решение.

...