关于Redis的订阅与发布使用(subscribe)问题

发布于 2022-09-04 14:03:43 字数 1318 浏览 12 评论 0

关于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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倾`听者〃 2022-09-11 14:03:43

是的啊,只能这样。 如果你用过node.js的cluster/worker, websocket,对这种监听,就习以为常了。你可以对message的内容进行判断,然后处理不同业务啊。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文