表示されているsubscriber
変数は、実際には Socket.IO の一部ではなく、Redis データベースへのサブスクリプションです。サブスクライブした Redis クライアントは、message
サブスクライブしているインスタンスに新しいデータがあると、イベントを発生させます。コールバックはchannel
、データがサブスクライブされたチャネルである を提供し、次に実際のデータ自体を提供します。
var subscriber = redis.createClient();
subscriber.on('message', function(channel, message) {
io.sockets.emit('message', {
'channel': channel,
'message': message
});
});
channel 変数と message 変数は特に意味はありません。開発者が何をしているかによって異なります。パブリッシュ中に指定したチャネルは、受信するチャネルです。たとえば、パブリッシュ クライアントを作成すると、publish
メソッドを使用してメッセージをパブリッシュできます。
var publisher = redis.createClient();
publisher.publish(channel, message);
したがって、 channel へのパブリケーションは channelfoo
で受信されますfoo
。
var client1 = redis.createClient();
var client2 = redis.createClient();
client1.on('message', function(channel, message) {
console.log('Message: "' + message + '" received from channel "' + channel + '");
});
client2.publish('foo', 'This is a test message.');
コンソールに表示されます:
Message: "This is a test message." received from channel "foo"