Socket.io频道和消息回调

时间:2013-10-17 13:47:05

标签: javascript node.js sockets socket.io

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

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

我真的想在你的帮助下学习socket.io,你能帮我理解这行是什么吗?将message发出什么?那channel是什么?我想了解这行代码请帮助我们。感谢。

1 个答案:

答案 0 :(得分:2)

您看到的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
  });
});

频道和消息变量并不具体意味着什么,它们取决于您作为开发人员正在做什么。您在发布期间指定的通道是您将收到的任何频道。例如,如果我创建发布客户端,我可以使用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"