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客户端的工作原理。 它保留message
和pmessage
发出通知你SUBSCRIBE
和PSUBSCRIBE
事件的事件。
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); } });