我的印象是使用此库:
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--订阅
但是,如果您希望使用类似于代码中的语法,则可以始终定义自己的消息格式,并且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);
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句