Node-Redis用自定义消息订阅

我在使用这个库的印象是:

https://github.com/mranney/node_redis

可以做这样的事情:

var redis = require('redis'); var pub = redis.createClient(); var sub = redis.createClient(); sub.psubscribe('channel'); sub.on('message from channel', function(){}); pub.publish('channel','a message xyz'); 

问题是,我似乎无法得到sub.on()接收特定的自定义消息。 似乎被解雇的唯一入口点是sub.on('message')或者sub.on('pmessage') ,但是我怎么能得到sub.on('my custom message')被调用? 希望这是有道理的。

这就是节点redis客户端的工作原理。 它保留messagepmessage发出通知你SUBSCRIBEPSUBSCRIBE事件的事件。

https://github.com/mranney/node_redis#publish–subscribe

但是如果你想要一个像你的代码一样的语法,你总是可以定义你自己的消息格式和EventEmitter ,也许这样:

 var events = require('events'); var redis = require('redis'); var pub = redis.createClient(); var sub = redis.createClient(); var ee = new events.EventEmitter(); ee.on('aweomseEvent', function() { console.log('party!'); }); sub.on('subscribe', function() { var message = { type: 'aweomseEvent', isAwesome: true }; pub.publish('mychannel', JSON.stringify(message)); }); sub.subscribe('mychannel'); sub.on('message', function(channel, message) { var deserialized = JSON.parse(message); if (deserialized.type) { ee.emit(deserialized.type, deserialized); } });