Socket.io通道和消息callback
你好,我想知道这是如何真的工作:
subscriber.on('message', function(channel, message) { io.sockets.emit('message', {'channel': channel, 'message': message});
我真的想在你的帮助下学习socket.io,你能帮我理解这个线是什么吗? 什么message
会发出? 这是什么channel
? 我想了解这行代码,请帮助我的家伙。 谢谢。
您看到的subscriber
variables实际上并不是Socket.IO的一部分,它是对Redis数据库的订阅。 订阅的Redis客户端将在其订阅的实例具有新数据时触发该message
事件。 callback提供了channel
,这是数据订阅的通道,然后是实际的数据本身。
var subscriber = redis.createClient(); subscriber.on('message', function(channel, message) { io.sockets.emit('message', { 'channel': channel, 'message': message }); });
通道和消息variables并不具体表示什么,它们取决于您作为开发人员正在做的事情。 无论您在发布过程中指定哪个频道,您都将收到任何频道。例如,如果我创build发布客户端,则可以使用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"