大家好,我想知道这是如何工作的:
subscriber.on('message', function(channel, message) {
io.sockets.emit('message', {'channel': channel, 'message': message});
我真的很想在你的帮助下学习socket.io,你能帮我理解这条线是做什么用的吗?message
e 会发出什么?那channel
是为了什么?我想了解这行代码,请帮助我。谢谢。
大家好,我想知道这是如何工作的:
subscriber.on('message', function(channel, message) {
io.sockets.emit('message', {'channel': channel, 'message': message});
我真的很想在你的帮助下学习socket.io,你能帮我理解这条线是做什么用的吗?message
e 会发出什么?那channel
是为了什么?我想了解这行代码,请帮助我。谢谢。
您看到的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"