关于Redis的订阅与发布使用(subscribe)问题
关于redis的订阅和发布系统 有点使用上的疑惑。
以下是我的练习测试代码 找的文档修改自测的 没毛病。
var redis = require("redis");
var sub = redis.createClient(35050, '127.0.0.1'), pub = redis.createClient(35050, '127.0.0.1');
var msg_count = 0;
//订阅事件的会时候触发 subscribe ,回调包含两个参数,分别为订阅的频道和总订阅数量
sub.on("subscribe", function (channel, count) {
console.log('监听到订阅事件',channel, count)
});
//在pub的时候会触发 message事件,我们的所有业务处理基本就是靠监听它了
sub.on("message", function (channel, message) {
console.log('监听到发布事件')
console.log("sub channel " + channel + ": " + message);
msg_count += 1;
if (msg_count === 3) {
sub.unsubscribe()
sub.quit()
pub.quit();
}
});
//添加三个订阅
sub.subscribe("channel0");
sub.subscribe("channel1");
sub.subscribe("channel2");
//触发频道1的订阅者
setInterval(function(){
pub.publish("channel1", "I am message to chanle1")
},3e3)
//触发频道2的订阅者
setInterval(function(){
pub.publish("channel2", "I am message to chanle2")
},3e3)
我想问的是 pub.publish("channel1", "I am message to chanle1") 一条消息后。只能通过
sub.on ('message')这个内置的事件来接收后处理吗? 因为无论哪个频道的消息发布后都会触发message事件,要区分频道只能通过message回调函数的参数来处理,这样是不是有点资源浪费? 可能用惯了js的addEventListener和jquery等类库,总觉的是不是应该这样。
sub.on('myEventName',function(data){ }) //添加一个自定义观察者事件
pub.trigger('myEventName',data) //触发自定义事件并携带数据
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的啊,只能这样。 如果你用过node.js的cluster/worker, websocket,对这种监听,就习以为常了。你可以对message的内容进行判断,然后处理不同业务啊。