大家好,我想知道这是如何运作的:
subscriber.on('message', function(channel, message) {
io.sockets.emit('message', {'channel': channel, 'message': message});
我真的想在你的帮助下学习socket.io,你能帮我理解这行是什么吗?将message
发出什么?那channel
是什么?我想了解这行代码请帮助我们。感谢。
答案 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"