Socket.io通道和消息callback

你好,我想知道这是如何真的工作:

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

我真的想在你的帮助下学习socket.io,你能帮我理解这个线是什么吗? 什么message会发出? 这是什么channel ? 我想了解这行代码,请帮助我的家伙。 谢谢。

您看到的subscribervariables实际上并不是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"