1

get リクエストでチャネルにサブスクライブした redis 接続があります

app.get('/wait', function (req, res) {
    redisSub.on('message', function(channel, msg) {
        console.log('rcv: ' + msg);
    });
});

その後、別の取得リクエストでメッセージを送信します

app.get('/done/:msg', function (req, res) {
    redisPub.publish('message', req.params.msg);
});

問題は、そのリクエストがメッセージを取得したら、メッセージのリッスンを停止することです。そうしないと、もう一度通過すると、まだリッスンしていて、次のメッセージが再び表示されます。メッセージが受信されたら、リスナーをそれ自体から削除する方法がわかりません。

4

1 に答える 1

1

テストされていませんが、これは機能するはずです。

var callback = function(channel, msg) {
    console.log('rcv: ' + msg);
    redisSub.removeListener('message', callback); 
}
redisSub.on('message', callback);
于 2012-10-15T05:36:52.650 に答える