小さな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を知っていますか?