1

小さなNodeアプリでRedispub/subを動作させようとしています。現在、node-redisを使用していますが、pub/subのAPIを理解していません。名前でチャンネルを購読できるようですが、次のように、一般的な「メッセージ」イベントですべてのチャンネルのすべてのメッセージを受信します。

var express = require('express')
  , app = express()
  , server = app.listen(4000) 
  , sio = require('socket.io') 
  , io = sio.listen(server)
  , db = require('redis').createClient();

  io.sockets.on('connection', function (socket) {
     db.subscribe("foo");
     db.subscribe("bar");
     db.on("message", function(channel, message) {
         socket.emit('message', message);                
     });
  });

これにより、サブスクリプションごとに新しいクライアントを作成するか、次のようなものを使用する必要があります。

db.on("message", function(channel, message) {
 socket.emit(channel, message);                
});

次に、適切なsocket.ioチャネルクライアント側をリッスンします。どちらも私にとって理想的ではありません。

サブスクライブ時にコールバックを登録したいので、次の擬似コードスニペットのように、そのチャネルのメッセージのみを受信します。

db.subscribe("foo", function(message) {
    socket.emit("foo_message", message);
});

db.subscribe("bar", function(message) {
    socket.emit("bar_message", message);
});

誰かが私の問題のクリーンな解決策、または私の願いをサポートする別のredis APIを知っていますか?

4

0 に答える 0