2

大家好,我想知道这是如何工作的:

subscriber.on('message', function(channel, message) {
    io.sockets.emit('message', {'channel': channel, 'message': message});

我真的很想在你的帮助下学习socket.io,你能帮我理解这条线是做什么用的吗?messagee 会发出什么?那channel是为了什么?我想了解这行代码,请帮助我。谢谢。

4

1 回答 1

2

您看到的subscriber变量实际上并不是 Socket.IO 的一部分,它是对 Redis 数据库的订阅。message当订阅的实例有新数据时,订阅的 Redis 客户端将触发该事件。回调提供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);

因此,foo将在频道中接收到频道的发布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"
于 2013-10-17T23:56:58.357 回答